From: Justin Graf <justin@magwerks.com>
To: Plugge, Joe R. <JRPlugge@west.com>
To: pgsql-sql@postgresql.org
Subject: Re: Column Specific Update Trigger Routine
Date: Thu, 06 May 2010 16:59:16 -0400
Message-ID: <4BE32DA4.3040209@magwerks.com> (raw)
In-Reply-To: <BD69807DAE0CE44CA00A8338D0FDD08302D2654129@oma00cexmb?= =?utf-8?Q?x03.corp.westworlds.com>
References: <4B54FDF3.4070601@gmx.net>
<92869e661001190627i4d42e3?= =?utf-8?Q?68nbb0e96bf5c54ca76@mail.gmail.com>
<4B55E22F.80409@gmx.net>
<65937bea1001192145u380846f3u30cc10d9d1784690@mail.gmail.com>
<?= =?utf-8?Q?65937bea1001192223o2a443c3dw9148352fc2bb76d4@mail.gmail.com>
<BD?= =?utf-8?Q?69807DAE0CE44CA00A8338D0FDD08302D2654129@oma00cexmbx03.corp.westwo?= =?utf-8?Q?rlds.com>
On 5/6/2010 4:12 PM, Plugge, Joe R. wrote:
>
> I am trying to create a update trigger on a table that basically will
> only fire when a specific column is updated. I am using version 8.4.3.
>
> My plan of attack was to always fire on any row update, and pass in
> the OLD and NEW column that I want to check.
>
> CREATE TRIGGER check_lockout
>
> AFTER UPDATE ON acct_table
>
> FOR EACH ROW
>
> EXECUTE PROCEDURE
> acct_unlock(OLD.userid,OLD.ownerid,OLD.password,NEW.password);
>
> This fails with :
>
> [postgres@linux1505 ~]$ cat check_lockout_trig.sql | psql testdb
>
> ERROR: syntax error at or near "OLD"
>
> LINE 4: EXECUTE PROCEDURE
> acct_unlock(OLD.userid,OLD.ownerid,OLD.password,NEW.password);
>
> What am I doing wrong? Or is there a better way to go about this?
>
You don't call the trigger procedure with the old and new as parameters
new and old are automatically created for the function acct_unlock()
CREATE TRIGGER check_lockout
AFTER UPDATE ON acct_table
FOR EACH ROW
EXECUTE PROCEDURE acct_unlock();
Next the trigger function would look something like this
create or replace function acct_unlock()
returns trigger as
$$
if (OLD.userid <> NEW.password)
do something
end if;
$$
keep in mind the acct_unlock must be returns trigger
Then return either NEW or the OLD record
OLD if not changing the record or NEW if the updated values are to be
stored in the table.
All legitimate Magwerks Corporation quotations are sent in a .PDF file attachment with a unique ID number generated by our proprietary quotation system. Quotations received via any other form of communication will not be honored.
CONFIDENTIALITY NOTICE: This e-mail, including attachments, may contain legally privileged, confidential or other information proprietary to Magwerks Corporation and is intended solely for the use of the individual to whom it addresses. If the reader of this e-mail is not the intended recipient or authorized agent, the reader is hereby notified that any unauthorized viewing, dissemination, distribution or copying of this e-mail is strictly prohibited. If you have received this e-mail in error, please notify the sender by replying to this message and destroy all occurrences of this e-mail immediately.
Thank you.
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: justin@magwerks.com, JRPlugge@west.com
Subject: Re: Column Specific Update Trigger Routine
In-Reply-To: <4BE32DA4.3040209@magwerks.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox