它给你一个语法错误,因为它是不允许的语法。从您的示例中,我认为架构可能是:
create table data_table (uid integer primary key autoincrement.
label string);
在这种情况下primary key
意味着unique
。但是,由于您允许自动生成uid
then 您并不关心它的价值是什么,您只是不希望重复label
s 在这种情况下您实际上关心它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
不是出于此问题的目的的示例名称,那么您应该使用更有意义的名称,因为这些名称非常不具信息性。