Hi,
ich möchte eine Funktion in meiner Datenbank anlegen, die diese Datenbank mit bestimmten Strukturen initialisiert. Unter anderem sollen Tabellen und Trigger angelegt werden. Wie definiere ich nun Trigger und lege sie an?
gruss chuqa
Chuqa hat geschrieben:Hi,
ich möchte eine Funktion in meiner Datenbank anlegen, die diese Datenbank mit bestimmten Strukturen initialisiert. Unter anderem sollen Tabellen und Trigger angelegt werden. Wie definiere ich nun Trigger und lege sie an?
gruss chuqa
test=# \h create trigger
Command: CREATE TRIGGER
Description: define a new trigger
Syntax:
CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }
ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE funcname ( arguments )
test=#
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Chuqa hat geschrieben:Ok, hab mich etwas schlecht ausgedrückt.
Ich will die CREATE-Anweisung für den Trigger in einer Funktion formulieren, so dass diese Funktion mehrere Tabellen und mehrere Trigger anlegt, sowie die Trigger zuordnet. Wie geht das?
test=# create function t1() returns trigger as $$begin raise notice 'bla';return NEW; end;$$language plpgsql;
CREATE FUNCTION
test=*# create function t2() returns int as $$begin execute 'create trigger tg1 before insert on foo for each row execute procedure t1();'; return 1;end;$$language plpgsql;
CREATE FUNCTION
test=*# select t2();
t2
----
1
(1 row)
test=*# insert into foo values (now(), now());
NOTICE: bla
INSERT 0 1
test=*# \d foo
Table "public.foo"
Column | Type | Modifiers
--------+-----------------------------+---------------
ts1 | timestamp without time zone | default now()
ts2 | timestamp with time zone | default now()
Triggers:
tg1 BEFORE INSERT ON foo FOR EACH ROW EXECUTE PROCEDURE t1()
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Zurück zu Trigger und Funktionen
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste