INSERT или REPLACE создает дубликаты

Всякий раз, когда я выполняю команду «ВСТАВИТЬ ИЛИ ЗАМЕНИТЬ» в sqlite3, она фактически создает повторяющиеся записи вместо перезаписывания существующих записей.

Я создал таблицу в 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); 

И тогда я выполняю это:

 $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')); 

Что я могу делать неправильно? благодаря

Вы должны указать в своем заявлении о 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)); 

Теперь

 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> 

Не делай этого. Вы должны указать PK.

Сделайте начальный INSERT , затем выполните UPDATE .