Я пытаюсь выяснить, что проблема в течение нескольких часов :(Sqlite ИЛИ ВСТАВИТЬ REPLACE INTO не работает, как ожидалось
Таблица выглядит следующим образом:
CREATE TABLE IF NOT EXISTS pages(
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
parent INTEGER DEFAULT NULL,
content TEXT,
time INTEGER,
FOREIGN KEY(category) REFERENCES categories(id) ON DELETE CASCADE,
FOREIGN KEY(parent) REFERENCES pages(id) ON DELETE CASCADE,
UNIQUE(title) ON CONFLICT REPLACE
)
Вставка запрос:
INSERT OR REPLACE INTO pages (title, parent, content, time) VALUES (?, ?, ?, ?)
title
должен быть уникальным, поэтому, если он обнаружил запись с тем же названием, она должна быть заменена, она заменяется, но идентификатор тоже меняется! Это проблема, потому что все другие записи, которые были havin g родительское поле, указывающее на старый идентификатор, удаляется :(
Почему это происходит?
ОК, что имеет смысл:/Думаю, мне нужно проверить, существуют ли записи и обновить запрос, иначе вставьте .. – thelolcat
Вот еще один поток, который я нашел: http://stackoverflow.com/questions/16942109/sqlite-replace-without -автоматическое приращение – Mihai