它給你一個語法錯誤,因爲它不是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