From: | "Ramakrishnan Muralidharan" <ramakrishnanm(at)pervasive-postgres(dot)com> |
---|---|
To: | <weigelt(at)metux(dot)de>, "pgsql-sql" <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: trigger/rule question |
Date: | 2005-05-02 04:49:17 |
Message-ID: | 02767D4600E59A4487233B23AEF5C5992A4081@blrmail1.aus.pervasive.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
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: pgsql-sql-owner(at)postgresql(dot)org
[mailto:pgsql-sql-owner(at)postgresql(dot)org]On Behalf Of Enrico Weigelt
Sent: Monday, May 02, 2005 9:02 AM
To: pgsql-sql
Subject: Re: [SQL] trigger/rule question
* Ramakrishnan Muralidharan <ramakrishnanm(at)pervasive-postgres(dot)com> 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: contact(at)metux(dot)de
---------------------------------------------------------------------
Realtime Forex/Stock Exchange trading powered by postgresSQL :))
http://www.fxignal.net/
---------------------------------------------------------------------
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
From | Date | Subject | |
---|---|---|---|
Next Message | Ramakrishnan Muralidharan | 2005-05-02 05:00:45 | Re: can someone jelp me on this? |
Previous Message | Leo Fink | 2005-05-02 04:26:28 | Re: Array of Arrays of int |