Всякий раз, когда я выполняю команду «ВСТАВИТЬ ИЛИ ЗАМЕНИТЬ» в 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
.