изменить столбец таблицы sqlite, чтобы он был уникальным

У меня есть таблица в моей БД, как это:

. . .

 String contactsTableName = TABLE_CONTACTS;

            // creating the "contacts" table
            buf.append("CREATE TABLE IF NOT EXISTS ");
            buf.append(contactsTableName);
            buf.append(" (");
            buf.append("_id INTEGER PRIMARY KEY,");
            buf.append("username TEXT,");
            buf.append("nickname TEXT,");

            buf.append("provider INTEGER,");
            buf.append("account INTEGER,");
            buf.append("contactList INTEGER,");
            buf.append("type INTEGER,");
            buf.append("subscriptionStatus INTEGER,");
            buf.append("subscriptionType INTEGER,");
. . .  

И теперь я хочу изменить эту таблицу и сделать столбец username UNIQUE, я написал метод onUpgrade(), я не знаю, как синтаксис sql для этой цели.
Я изменяю этот код следующим образом в моем onCreate():

buf.append("username TEXT UNIQUE");

Надеюсь, я ясно объясню свою проблему и приношу свои извинения за мой плохой английский. :)


person YFeizi    schedule 17.08.2016    source источник
comment
вроде нормально, так как username TEXT unique запустится. вы видели какую-либо ошибку. Также сначала очистите все данные и удалите строку username TEXT, написанную ранее   -  person Riad    schedule 17.08.2016
comment
Это не первый выпуск моего приложения, и я не хочу, чтобы пользователи теряли свои данные! это нормально для нового пользователя, но для пользователей, обновляющих свое приложение, это проблема   -  person YFeizi    schedule 17.08.2016
comment
я спросил об ошибке, которую вы видите. есть ли? выложите логи ошибок. изменение столбца как уникального может вызвать проблему, если какое-либо повторяющееся значение уже существует.   -  person Riad    schedule 17.08.2016
comment
Проблема в том, что я не уверен, как я могу написать статус изменения для изменения столбца.   -  person YFeizi    schedule 17.08.2016
comment
вы меняете тип, который кажется нормальным. так что продолжайте, и если возникнет какая-либо ошибка, сообщите нам   -  person Riad    schedule 17.08.2016