在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是否支持级联触发器?即触发其他触发器。
此外,某种交易是否会阻止触发器工作?