在 SQLite 中考虑这个 SQL:
CREATE TABLE X (Xid INTEGER PRIMARY KEY);
CREATE TABLE Y (Yid INTEGER PRIMARY KEY, Xid INTEGER NOT NULL);
CREATE TABLE Z (Yid INTEGER PRIMARY KEY, Blah INTEGER NOT NULL);
CREATE TRIGGER IF NOT EXISTS OnDeleteX
BEFORE DELETE ON X
FOR EACH ROW BEGIN
DELETE FROM Y WHERE Xid = OLD.Xid;
END;
CREATE TRIGGER IF NOT EXISTS OnDeleteY
BEFORE DELETE ON Y
FOR EACH ROW BEGIN
DELETE FROM Z WHERE Yid = OLD.Yid;
END;
当我删除一行时,X
我希望它的链接项目Y
也会 Z
被删除。我已经使用 SQLite 3.7.11 在我的 PC 上验证了这种行为。在 Android 4.0.4 上,这似乎不起作用。
问: Android 上的 SQLite 是否支持级联触发器?即触发其他触发器的触发器。
此外,是否某种事务会阻止触发器工作?