我有一个如下所示的 SQLite 表:
CREATE TABLE myTable (
_id integer primary key autoincrement,
...
... /* some useful fields */
...
parent integer,
FOREIGN KEY (parent) REFERENCES myTable (_id)
);
myTable 中的某些条目有父级,而其他条目则没有。业务逻辑确保没有“圈子”。我正在使用PRAGMA foreign_keys = ON
,以便检测到外键违规。
问题:如果我想删除整个表,执行是否足够DELETE FROM myTable
?还是我需要先删除“叶子”,然后再删除他们的父母等,以避免外键违规?
我已经对其进行了测试,并且DELETE FROM myTable
似乎可以正常使用。但是,我想知道这只是巧合还是我可以依赖的东西(即记录和预期的行为)。
编辑:我没有ON DELETE CASCADE
启用,这是故意的。