Thread: Help on Trigger functions
Hi all,
I have a table something like this -
PointTable(PointName varchar, PointType integer, PointValue integer);
I have to write a trigger before UPDATE on this table. In the trigger function, I need to check which field of the table is going to be updated...based on this I need to do some operation.
CREATE FUNCTION Trg_UpdPointTable RETURNS TRIGGER AS'
BEGIN
IF PointType is being modified THEN
// do some operation.
ELSIF PointValue is being modified THEN
// Do some operation
END IF;
END;
CREATE TRIGGER PTableTrg BEFORE UPDATE ON PointTable FOR EVERY ROW EXECUTE PROCEDURE Trg_UpdPointTable();
Is this functionality possible. I am using PostgreSQL version 7.4.3.
Thanks in advance.
Regards,
Pradeep
Pradeepkumar, Pyatalo (IE10) wrote: > > > Hi all, > > I have a table something like this - > > PointTable(PointName varchar, PointType integer, PointValue integer); > > I have to write a trigger before UPDATE on this table. In the trigger > function, I need to check which field of the table is going to be > updated...based on this I need to do some operation. > > CREATE FUNCTION Trg_UpdPointTable RETURNS TRIGGER AS' > BEGIN > IF PointType is being modified THEN > // do some operation. > ELSIF PointValue is being modified THEN > // Do some operation > END IF; > END; > > CREATE TRIGGER PTableTrg BEFORE UPDATE ON PointTable FOR EVERY ROW > EXECUTE PROCEDURE Trg_UpdPointTable(); > > > Is this functionality possible. I am using PostgreSQL version 7.4.3. > > Thanks in advance. > > Regards, > Pradeep > > Pradeep, You can access the before and after values of an update statement with the NEW and OLD record variables. See http://www.postgresql.org/docs/8.0/interactive/plpgsql-trigger.html for more information. Based on that I think that you can do something like: IF NEW.pointtype <> OLD.pointtype THEN HTH -- Kind Regards, Keith