Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Instead-of-trigger Faglig forum. Instead-of-trigger Problem: En har et VIEW som består av mange JOINs. Komplekst å oppdatere alle tabellene som inngår.

Liknende presentasjoner


Presentasjon om: "Instead-of-trigger Faglig forum. Instead-of-trigger Problem: En har et VIEW som består av mange JOINs. Komplekst å oppdatere alle tabellene som inngår."— Utskrift av presentasjonen:

1 Instead-of-trigger Faglig forum

2 Instead-of-trigger Problem: En har et VIEW som består av mange JOINs. Komplekst å oppdatere alle tabellene som inngår. Løsning: Oppdatere VIEW direkte Hvordan: INSTEAD-OF-TRIGGER

3 Instead-of-trigger Opprinnelig VIEW: CREATE OR REPLACE VIEW AS SELECT * from t1 … INNER JOIN t2 … LEFT OUTER JOIN t3 …

4 Instead-of-trigger Problem: Oppdatere mange tabeller, helst med transaksjonskontroll: BEGIN UPDATE t1 SET… UPDATE t2 SET… UPDATE t3 SET… END; (COMMIT;)

5 Instead-of-trigger CREATE OR REPLACE TRIGGER name INSTEAD OF verb_list ON view_name DECLARE … BEGIN … END; /

6 Instead-of-trigger UPDATE mitt_view SET col1 = ’test’, col2 = ’foo’ WHERE id = 3; ----------------------------------------------------------------------- CREATE OR REPLACE TRIGGER min_trigger INSTEAD OF UPDATE ON mitt_view BEGIN UPDATE t1 SET col1 = :NEW.col1 WHERE id = :NEW.id; UPDATE t2 SET col2 = :NEW.col2 WHERE id = :NEW.id; END; /

7 Instead-of-trigger En kan lage én og samme trigger som støtter alle CRUD-operasjoner COMMIT/ROLLBACK må ikke forekomme inne i triggeren Feiler én update-setning, feiler alle. Støttes ikke i PostgreSQLs triggere (må bruke INSTEAD RULE i stedet)

8 Instead-of-trigger CREATE OR REPLACE TRIGGER min_trigger INSTEAD OF INSERT OR UPDATE OR DELETE ON mitt_view BEGIN IF INSERTING THEN … END IF; IF UPDATING THEN … END IF; IF DELETING THEN … END IF; END; /


Laste ned ppt "Instead-of-trigger Faglig forum. Instead-of-trigger Problem: En har et VIEW som består av mange JOINs. Komplekst å oppdatere alle tabellene som inngår."

Liknende presentasjoner


Annonser fra Google