我正试图找出问题几个小时:(
表格如下:
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
应该是唯一的,所以如果它找到一个具有相同标题的记录,它应该替换它。它被取代了,但ID也改变了!这是一个问题,因为所有其他具有指向旧ID的父字段的记录都将被删除:(
为什么会这样?
答案 0 :(得分:4)
您的ID设置为自动递增,因此当您替换某些内容时,ID也会更改。因为替换意味着删除旧行并插入新行。 我不知道sqlite是否有INSERT ... ON DUPLICATE KEY UPDATE
答案 1 :(得分:0)
我认为您需要将TEXT类型替换为
VARCHAR