【发布时间】:2015-03-30 14:38:59
【问题描述】:
我了解PRAGMA foreign_key 和ON DELETE RESTRICT/NO ACTION 的概念,但我面临着另一种情况。
我需要删除父行但保持子行与其关联。例如:
CREATE TABLE A(id, name);
INSERT INTO A(id, name) VALUES (1, "Loreum");
CREATE TABLE B(id, id_A, name) FOREIGN KEY(id_A) REFERENCES A(id);
INSERT INTO B(id, id_A, name) VALUES (1, 1, "Opium");
DELETE FROM A WHERE id = 1;
我想实现这一点同时保持子行完整。这可能吗?
编辑
上面的示例将我的问题与this question 分开。示例可能会帮助某些人,他们只有在有代码时才能理解。
【问题讨论】:
-
INTACT 是什么意思? id 应该还在 tableB 中?
-
是的,子行没有任何反应,但父行被删除。是的,数据完整性会受到侵犯,但这就是我想要的:P
-
这不适用于
no actionset? -
是的,
NO ACTION不允许我删除父级;抛出错误 -
我正在从this 回答中寻求帮助。这表明
ON DELETE NO ACTION不允许您删除父级。基本上,SQLite 试图保持数据完整性。
标签: sqlite foreign-keys