ビューにトリガーを張る
SQLiteだとビューは読み取り専用で、INSERT
、UPDATE
、DELETE
できないので、代わりにトリガーを使う。とりあえずINSERT
だけメモ。最小限しか書いてないので、実際に使うときはもう少し必要だろうね。NOT NULL
制約がかかってたりするかもしれないし、UPDATE
とDELETE
も必要だし。
CREATE TABLE a (id, a); CREATE TABLE b (id, b); CREATE TABLE c (id, c); CREATE VIEW v AS SELECT a.id, a.a, b.b, c.c FROM a NATURAL JOIN b NATURAL JOIN c; CREATE TRIGGER t_v INSTEAD OF INSERT ON v BEGIN INSERT INTO a VALUES (NEW.id, NEW.a); INSERT INTO b VALUES (NEW.id, NEW.b); INSERT INTO c VALUES (NEW.id, NEW.c); END; INSERT INTO v VALUES (1, 'A', 'B', 'C');