Hi, I have written the following trigger assuming the application can pass NULL value on mtime and it can be handled on the server side by the trigger.
CREATE TABLE TEST3 ( ID INT4 NOT NULL, DDATE TIMESTAMP ) CREATE OR REPLACE FUNCTION Updatemtime() RETURNS TRIGGER AS $Updatemtime$ DECLARE dDate timestamp; BEGIN dDate = 'now'; IF COALESCE(NEW.DDATE , dDate ) = dDate THEN NEW.DDATE = dDate; END IF; RETURN NEW; END; $Updatemtime$ LANGUAGE 'plpgsql'; CREATE TRIGGER Updatemtime BEFORE INSERT ON TEST3 FOR EACH ROW EXECUTE PROCEDURE Updatemtime(); INSERT INTO TEST3 VALUES( 1 , NULL ); INSERT INTO TEST3 VALUES( 2 , '2005-05-01'); select * from TEST3 I will continue work on this and let you know if I can find another better solution for this issue. Regards, R.Muralidharan -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Enrico Weigelt Sent: Monday, May 02, 2005 9:02 AM To: pgsql-sql Subject: Re: [SQL] trigger/rule question * Ramakrishnan Muralidharan <[EMAIL PROTECTED]> wrote: Hi, > Going through you mail, I assume that you are updating the mtime > only after inserting the record. An "normal" update (=done by an application or user) should also update the mtime. But there's an replication subsystem, which writes should go through untouched. > It is always possible to check the mtime filed value of the inserted > record and take action based on it in the trigger. yeah, but how to detect whether the application has explicitly written it ? The only chance I currently have in mind is to use some session dependent data, i.e. username or some persistant storage (could be easily done ie. w/ plphp) for this decision. The sync subsystem has to do some "special" login (ie. separate user or setting the session wide variable) before doing its work. I would be happier to let a rule do this, so there's not an extra function per written row. But all my experiments ran into infinite recoursion trouble. > Is it possible to send me detail about the trigger? The trigger isn't existing yet. I'm currently maintaining the mtime updates within the application, but I wanna get away from that. It probably would be interesting, if a normal application couldn't touch the mtime at all. cu -- --------------------------------------------------------------------- Enrico Weigelt == metux IT service phone: +49 36207 519931 www: http://www.metux.de/ fax: +49 36207 519932 email: [EMAIL PROTECTED] --------------------------------------------------------------------- Realtime Forex/Stock Exchange trading powered by postgresSQL :)) http://www.fxignal.net/ --------------------------------------------------------------------- ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]