Ein Beispiel zu Rules in PostgreSQL:
View für Kunden der BibliothekDB erzeugen:
CREATE OR REPLACE VIEW kundenview AS SELECT person.persnr, person.vorname, person.nachname, kunde.treuepunkte FROM kunde LEFT JOIN person ON kunde.persnr = person.persnr;
Wenn wir nun eine Funktion zum Updaten des Views erzeugen wollen müssen wir zuerste eine Funktion schreiben (sofern die Rule nicht in einem SQL Statment abgehandelt werden kann):
CREATE OR REPLACE FUNCTION kundenview_UPDATE(pnew kundenview, pold kundenview)
RETURNS void AS
' DECLARE
--NEW kundenview%ROWTYPE;
--OLD kundenview%ROWTYPE;
BEGIN
--NEW := pnew;
--OLD := pold;
UPDATE person SET nachname = pnew.nachname, vorname = pnew.vorname WHERE person.persnr = pold.persnr; UPDATE kunde SET treuepunkte = pnew.treuepunkte WHERE kunde.persnr = pold.persnr; RETURN NULL;
END; ' LANGUAGE plpgsql;
Danach können wir eine Rule schreiben die diese Funktion aufruft:
CREATE OR REPLACE RULE "_UPDATE" AS
ON UPDATE TO kundenview DO INSTEAD
SELECT kundenview_UPDATE(NEW, OLD);