Trigger in einer Funktion anlegen

Probleme und Fragen zum Thema Trigger und Funktionen.

Trigger in einer Funktion anlegen

Beitragvon Chuqa » Mo 3. Sep 2007, 10:22

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
Benutzer
 
Beiträge: 39
Registriert: Mi 25. Jan 2006, 09:26

Beitragvon akretschmer » Mo 3. Sep 2007, 10:30

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


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

Code: Alles auswählen
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
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5954
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon Chuqa » Mo 3. Sep 2007, 11:44

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?
Chuqa
Benutzer
 
Beiträge: 39
Registriert: Mi 25. Jan 2006, 09:26

Beitragvon akretschmer » Mo 3. Sep 2007, 11:54

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?


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

Code: Alles auswählen
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
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5954
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon Chuqa » Mo 3. Sep 2007, 16:51

akretschmer hat geschrieben:Warum nicht einfach ein SQL-Script, was das alles macht?


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

Herzlichen Dank für die Hilfe

gruss
Chuqa
Benutzer
 
Beiträge: 39
Registriert: Mi 25. Jan 2006, 09:26


Zurück zu Trigger und Funktionen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste