Это дает вам синтаксическую ошибку, потому что это не разрешенный синтаксис. Из вашего примера я предполагаю, что схема, вероятно, такова:
create table data_table (uid integer primary key autoincrement.
label string);
в этом случае primary key
подразумевает unique
. Но, поскольку вы разрешаете автоматическое создание uid
, вам все равно, каково его значение, вы просто не хотите дублировать label
, и в этом случае вам действительно важно, чтобы label
было уникальным, поэтому скажите так:
create table data_table (uid integer primary key autoincrement,
label string unique on conflict fail);
который затем работает, как ожидалось:
sqlite> insert into data_table (label) values ("uk");
sqlite> insert into data_table (label) values ("uk");
Error: column label is not unique
sqlite> select * from data_table;
1|uk
Между прочим, если имена data_table
, uid
и label
не являются примерами имен для целей этого вопроса, вам следует использовать более осмысленные имена, поскольку они ужасно неинформативны.
person
msw
schedule
19.07.2010