durch update in einem trigger einen anderen trigger auslösen

From: "Daniel J(dot) Priem" <danielpriem(at)flexserv(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: durch update in einem trigger einen anderen trigger auslösen
Date: 2006-03-11 00:17:38
Message-ID: 1142036258.16655.8.camel@xserver.flexserv.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hallo Liste ich habe folgendes Problem:
wenn ich ein ein insert mache wird insert-trigger (ich mache ein update)
aufgerufen.
dieses update wiederum müsste update-trigger(ich mach was andres)
aufrufen.
leider passiert nur step 1
führe ich jedoch ein händisches update foo.bar value 123 aus dann feuert
update-trigger.

Bitte CC an mich, da ich nicht subscribed bin.

Vielen Dank
Daniel

CREATE OR REPLACE FUNCTION create_basnhex()
RETURNS "trigger" AS
'
BEGIN
IF TG_OP = ''INSERT'' THEN
UPDATE artbacn SET countanzahl = NEW.anzahl WHERE banr =
NEW.banr ;
END IF;
RETURN NEW;
END;
'
LANGUAGE 'plpgsql' VOLATILE;

CREATE OR REPLACE FUNCTION update_basnhex()
RETURNS "trigger" AS
'
BEGIN
IF TG_OP = ''UPDATE'' THEN
INSERT INTO basnhex (banr) VALUES (NEW.banr) ;
UPDATE artbacn SET countanzahl = NEW.countanzahl -1 WHERE banr =
NEW.banr AND OLD.countanzahl > 1;
END IF;
RETURN NEW;
END;
'
LANGUAGE 'plpgsql' VOLATILE;

DROP TRIGGER watch_artbacn ON artbacn;

CREATE TRIGGER watch_artbacn
AFTER INSERT
ON artbacn
FOR EACH ROW
EXECUTE PROCEDURE create_basnhex();

/*
CREATE or replace RULE copy_artbacn AS ON INSERT TO artbacn DO ( insert
into artbacn (countanzahl) SELECT anzahl FROM artbacn where countanzahl
IS NULL);
*/

DROP TRIGGER watch_artbacn2 ON artbacn;
CREATE TRIGGER watch_artbacn2
AFTER UPDATE ON artbacn
FOR EACH ROW
EXECUTE PROCEDURE update_basnhex();

dieses command feuert nur den ersten trigger
insert into artbacn (banr,articlenr,anzahl) values (20,1,900);

dieses command feurt wie gewünscht den zweiten trigger
update artbacn set anzahl = '800' where banr = '18'

--
Erst wenn der letzte Programmierer/Codebreaker eingesperrt...
...und die letzte Idee/Algorithm patentiert ist, werdet ihr merken, dass
Anwälte nicht programmieren können.

Daniel J. Priem

mail danielpriem(at)flexserv(dot)de
http://flexserv.de

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Seltenreich 2006-03-13 12:47:40 Re: durch update in einem trigger einen anderen trigger
Previous Message A. Kretschmer 2006-03-08 05:56:43 Re: Sequenz mit Ausnahmen