Trigger in einer Funktion anlegen

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

Sowohl psql mit \h create trigger als auch die Onlinedoku defekt?

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=#

Andreas

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?

Warum nicht einfach ein SQL-Script, was das alles macht? Egal. Du suchst EXECUTE.

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()

Andreas

Ohje, na eben. Das ist ja wesentlich gescheiter. So habe ich das jetzt auch gemacht.

Herzlichen Dank für die Hilfe

gruss