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
、そのリンクされたアイテムも削除されることが期待されます。SQLite 3.7.11 を使用して、PC でこの動作を確認しました。Android 4.0.4 では、これは機能しないようです。Y
Z
Q: Android 上の SQLite はカスケード トリガーをサポートしていますか? つまり、他のトリガーを起動するトリガーです。
また、何らかのトランザクションによってトリガーが機能しなくなる可能性はありますか?