如果孩子在场,如何停止父删除

时间:2011-01-27 10:53:36

标签: android sqlite

我想在SQLite中使用约束。

场景:如果有孩子,请停止父删除。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

更正:SQLite支持外键约束,但默认情况下它们处于关闭状态。您必须使用此语句在运行时启用它们。 (这意味着你不能设置一次,并期望它坚持。如果你忘记只设置一次,你可以从父项中删除行并在子表中留下孤立。)

sqlite> PRAGMA foreign_keys = ON;

详细信息位于Enabling Foreign Key Support

可以使用完全禁用的外键支持编译SQLite。这是要记住的事情。

答案 1 :(得分:0)

假设您有表A(ID,NAME)和表B(ID,A_ID,NICK_NAME)

当你创建表A时,你会做

create table A (
    ID INTEGER PRIMARY KEY,
    NAME TEXT NOT NULL UNIQUE
);

create table B (
    ID INTEGER PRIMARY KEY,
    A_ID INTEGER NOT NULL,
    NICK_NAME TEXT,
    CONSTRAINT A_FK FOREIGN KEY (A_ID) REFERENCES A (ID) ON DELETE RESTRICT
);

如果您尝试删除B列引用的表A中的内容,则应该导致错误。

编辑:正如原始海报的评论和我自己的评论中所述,这显然不起作用。还有其他人对此有所了解吗?