Getting NEW and OLD in ordinary functions. - Mailing list pgsql-sql

From Rajesh Kumar Mallah
Subject Getting NEW and OLD in ordinary functions.
Date
Msg-id 200304091551.02277.mallah@trade-india.com
Whole thread Raw
Responses Re: Getting NEW and OLD in ordinary functions.
Re: Getting NEW and OLD in ordinary functions.
List pgsql-sql
Hi,

is it possible to access NEW , OLD rows in an ordinary function
(function which are not TRIGGER PROCEDURES)


motivation:
We need to ensure data integrity of every row in a table.

1. one way is to one or many CHECK constraint on columns (or domains in 7.4).
2. To ADD a trigger procedure that checks for updates and new inserts.

Problem(i feel)  with 1 is that as my logic keeps getting more and more
complicated it may not be possible to put everything in a CHECK / set of CHECK
contraints. the logic may even require querying other tables which is anyway 
not possible in a CHECK () at the  moment.

Problem  with 2 is whenever the logic changes we need to check that all the 
rows of the existing table  satisfies it that logic. for this we either have toreload the data OR run a dummy update on
tableso that procedure is called 
 
for all the existing rows.

3. since ADDing of a CHECK constriaint  checks all the rows of a table.
It looks like a better approach to me. whenever the logic changes
we just DROP the CHECK constraint and Add it again so that all the rows are 
rechecked.

the problem i am facing with 3 is that i dont seem to find an easy way
of accessing the current record .

two possible workarounds are

1) pass the primary key to the function and query the table again  for the record.

2) pass all the columns as arguments to the function that has to check   the consistency.

in first case a primary key may not always exists for a relation .
in sencond case too many arguments requried to be passed as ur
logic grows. 

so i was wondering abt automagically getting NEW/OLD or a current record 
in a function that can be used in check constraint .




Regds
Mallah.

-- 
Rajesh Kumar Mallah,
Project Manager (Development)
Infocom Network Limited, New Delhi
phone: +91(11)6152172 (221) (L) ,9811255597 (M)

Visit http://www.trade-india.com ,
India's Leading B2B eMarketplace.



pgsql-sql by date:

Previous
From: Rajesh Kumar Mallah
Date:
Subject: question about visibilty while updating multiple rows .
Next
From: Rajesh Kumar Mallah
Date:
Subject: Re: Getting NEW and OLD in ordinary functions.