INSERT 或 REPLACE 正在创建重复项 [英] INSERT or REPLACE is creating duplicates
本文介绍了INSERT 或 REPLACE 正在创建重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
每当我对 sqlite3 执行插入或替换"命令时,它实际上是创建重复条目而不是覆盖现有条目.
Whenever I execute an "INSERT OR REPLACE" command to sqlite3, it's actually create duplicate entries instead of overwriting the existing entries.
我使用以下命令在 sqlite3 中创建了表:
I created the table in sqlite3 with the following command:
CREATE TABLE mytable (a INTEGER PRIMARY KEY, b VARCHAR(50), c BOOLEAN, d BOOLEAN, e INTEGER, f TEXT, g TEXT, h INTEGER, i DATETIME);
然后我正在执行这个:
$database = new POD("sqlite:mydatabase.db");
$database->prepare("INSERT OR REPLACE INTO mytable (b, c, d, e, f, h, h, i) values(?, ?, ?, ?, ?, ?, ?, ?)")
$database->execute('test', 0, 1, -1, 'test', 'test', 12, strtotime('now'));
我可能做错了什么?谢谢
What could I be doing wrong? Thanks
推荐答案
您应该在 create
语句中指定哪些列集应该是唯一的"——例如
You should specify in your create
statement what set of columns should be `unique' -- for example
CREATE TABLE mytable (a INTEGER PRIMARY KEY, b VARCHAR(50), c BOOLEAN, d BOOLEAN,
e INTEGER, f TEXT, g TEXT, h INTEGER, i DATETIME,
UNIQUE (b,c));
现在
sqlite> insert or replace into mytable (b,c,d,e,f,g,h,i) values ('foo',1,1,2,'bar','baz',3,'2011-07-19');
sqlite> select * from mytable;
2|foo|1|1|2|bar|baz|3|2011-07-19
sqlite> insert or replace into mytable (b,c,d,e,f,g,h,i) values ('foo',1,1,2,'bar','baz',4,'2011-07-19');
sqlite> select * from mytable;
3|foo|1|1|2|bar|baz|4|2011-07-19
sqlite>
这篇关于INSERT 或 REPLACE 正在创建重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文