Erstellen von Triggern in PostgreSQL
Posted by jogep on 28 Jul 2008 | Tagged as: datenbanken
Das folgende Beispiel zeigt einen Trigger, der bei jedem INSERT in die Tabelle test, den Wert in der Tabelle statistik erhöht.
Trigger können in Postgres in verschiedenen Sprachen geschrieben werden, in diesem Beispiel werden wir die prozedurale Sprache PGSQL verwenden. Dazu müssen wir die Sprache der Datenbank bekannt machen.
Nach dem erstellen unserer Test Tabelle und der Statistik Tabelle
können wir unsere Triggerfunktion schreiben.
Jetzt müssen wir die Triggerfunktion nur noch unserer Tabelle test zuweisen, und schon wird bei jedem Eintrag in die Tabelle test der Wert in der Tabelle statistik erhöht.
CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler VALIDATOR plpgsql_validator;
CREATE TABLE test ( id serial NOT NULL, CONSTRAINT "pTest" PRIMARY KEY (id) ) CREATE TABLE statistik ( tag DATE NOT NULL, test INTEGER NOT NULL DEFAULT 0, CONSTRAINT "pStatistik" PRIMARY KEY (tag) )
CREATE OR REPLACE FUNCTION count_test() RETURNS "trigger" AS $BODY$ DECLARE COUNT INTEGER; right_now DATE; BEGIN right_now := 'now'; SELECT INTO COUNT test FROM statistik WHERE tag = right_now; IF COUNT ISNULL THEN INSERT INTO statistik (tag, test) VALUES (right_now, 1 ); ELSE COUNT := COUNT + 1; UPDATE statistik SET test = COUNT WHERE tag = right_now; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER insert_test AFTER INSERT ON test FOR EACH ROW EXECUTE PROCEDURE count_test();
No Comments »
Twitter
Facebook
Github
Xing
LinkedIn