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