Sqlite INSERT或REPLACE INTO未按预期工作


Sqlite INSERT OR REPLACE INTO not working as expected

我正试图弄清楚几个小时以来的问题是什么:(

表格如下:

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的父字段的记录都将被删除:(

为什么会发生这种情况?

您的ID设置为自动递增,因此当您替换某个内容时,ID也会更改。因为替换意味着删除旧行并插入新行。我不知道sqlite是否有INSERT。。。关于重复密钥更新

我认为您需要将类型TEXT替换为

VARCHAR