它给你一个语法错误,因为它不是allowed syntax。从你的例子我猜的模式可能是:
其中
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
是不是这个问题就因为这些是可怕的无信息,你应该使用更有意义的名称的目的,例如名称。
来源
2010-07-19 14:35:12
msw
是的,我没有意识到这一点。谢谢:) – ukanth 2010-07-19 14:28:25