Это дает вам синтаксическую ошибку, потому что это не допустимый синтаксис .Из вашего примера я предполагаю, что схема, вероятно, выглядит так:
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
не являются примерами имен для целейв этом вопросе вам следует использовать более значимые имена, поскольку они ужасно неинформативны.