Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

durch update in einem trigger einen anderen trigger auslösen



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

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group