From: | Josh Berkus <josh(at)agliodbs(dot)com> |
---|---|
To: | Alan Searles <alien(at)attglobal(dot)net>, pgsql-novice(at)postgresql(dot)org |
Subject: | Re: Converting IBM DB2 TRIGGERs to PostgreSQL |
Date: | 2003-06-11 05:25:21 |
Message-ID: | 200306102225.21330.josh@agliodbs.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
Alan,
> Part of my challenge is to somehow convert the following (sample)
> TRIGGER statements that work just fine under DB2.
Easy. Read the part in the "Procedural Languages" section in the online docs
on "PL/pgSQL Triggers"
To do what you want .....
CREATE FUNCTION tf_alien_log () RETURNS TRIGGER AS '
DECLARE op_var TEXT;
create_date TIMESTAMP;
BEGIN
IF TG_OP = ''UPDATE'' THEN
op_var := ''UPD'';
create_date := NEW.created;
ELSE
op_var := ''INS'';
create_date := CURRENT_TIMESTAMP;
END IF;
INSERT INTO alien.country_log
VALUES (NEW.countryid, NEW.fullname, NEW.code, NEW.undefined,
NEW.markfordelete, NEW.userid,
create_date, CURRENT_TIMESTAMP, op_var);
RETURN NEW;
END; ' LANGUAGE 'plpgsql';
CREATE TRIGGER tg_alien_log AFTER INSERT OR UPDATE ON alien.country
FOR EACH ROW EXECUTE tg_alien_log();
Easy, neh? Plus in the future it will become possible to write triggers in
other langauges, such as TCL and Perl.
BTW, the "BEGIN ATOMIC" is superfluous in PostgreSQL; triggers are atomic by
definition.
--
Josh Berkus
Aglio Database Solutions
San Francisco
From | Date | Subject | |
---|---|---|---|
Next Message | Joanne Formoso | 2003-06-11 07:11:58 | Inheritance question |
Previous Message | Alan Searles | 2003-06-11 01:03:16 | Converting IBM DB2 TRIGGERs to PostgreSQL |