每当我对sqlite3执行"INSERT OR REPLACE"命令时,它实际上是创建重复的条目而不是覆盖现有的条目.
我使用以下命令在sqlite3中创建了表:
CREATE TABLE mytable (a INTEGER PRIMARY KEY, b VARCHAR(50), c BOOLEAN, d BOOLEAN, e INTEGER, f TEXT, g TEXT, h INTEGER, i DATETIME);
Run Code Online (Sandbox Code Playgroud)
然后我正在执行这个:
$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'));
Run Code Online (Sandbox Code Playgroud)
我能做错什么?谢谢
您应该在create语句中指定哪些列应该是"唯一" - 例如
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));
Run Code Online (Sandbox Code Playgroud)
现在
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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |