3

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 はカスケード トリガーをサポートしていますか? つまり、他のトリガーを起動するトリガーです。

また、何らかのトランザクションによってトリガーが機能しなくなる可能性はありますか?

4

0 に答える 0