我正在尝试使用Python将数据插入到SQLite数据库中。
INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK") WHERE "UK" NOT EXISTS IN (SELECT LABEL FROM DATA_TABLE);
这个查询是从Pythondynamic生成的,我正在检查插入之前表中是否已经存在date,并且它不在SQLite数据库中工作。 获取这个near "WHERE": syntax error
错误。
难道我做错了什么 ?
谢谢你的帮助。
我很确定INSERT
没有WHERE
子句( 文档没有提到任何 )。 你可以做什么:
LABEL
上创建一个唯一的索引 INSERT OR FAIL
这是给你一个语法错误,因为它是不允许的语法 。 从你的例子,我认为模式可能是:
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
不是针对此问题的示例名称,那么您应该使用更有意义的名称,因为这些名称是非常不可信的。
INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK") WHERE NOT EXISTS(SELECT 1 FROM DATA_TABLE WHERE LABEL="UK");
你可以使用这个来代替INSERT OR FAIL。