Trigger.. AFTER and BEFORE with specific column changed

Started by Albertabout 14 years ago5 messagesgeneral
Jump to latest
#1Albert
oo_O2_oo@hotmail.com

*I'm trying to follow this :*

CREATE TRIGGER check_update
*BEFORE* UPDATE ON accounts
FOR EACH ROW
WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
EXECUTE PROCEDURE check_account_update();

*but with AFTER instead of BEFORE. and I'm keep getting error on or near
WHEN.
does that because i have to use BEFORE ? what if i need to execute the
procedure after updating column and it has really changed.*

--
View this message in context: http://postgresql.1045698.n5.nabble.com/Trigger-AFTER-and-BEFORE-with-specific-column-changed-tp5610712p5610712.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Albert (#1)
Re: Trigger.. AFTER and BEFORE with specific column changed

On 04/01/2012 11:45 AM, Albert wrote:

*I'm trying to follow this :*

CREATE TRIGGER check_update
*BEFORE* UPDATE ON accounts
FOR EACH ROW
WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
EXECUTE PROCEDURE check_account_update();

*but with AFTER instead of BEFORE. and I'm keep getting error on or near
WHEN.

What is the error message?

does that because i have to use BEFORE ? what if i need to execute the
procedure after updating column and it has really changed.*

Depends what the procedure is doing. For more detail on what the WHEN
does in BEFORE and AFTER triggers see here:
http://www.postgresql.org/docs/9.0/interactive/sql-createtrigger.html

Look for the Notes section.

--
View this message in context: http://postgresql.1045698.n5.nabble.com/Trigger-AFTER-and-BEFORE-with-specific-column-changed-tp5610712p5610712.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.

--
Adrian Klaver
adrian.klaver@gmail.com

#3Albert
oo_O2_oo@hotmail.com
In reply to: Albert (#1)
Re: Trigger.. AFTER and BEFORE with specific column changed

*i get:*

Syntax error at or near 'WHEN'
LINE 1: ... check_update AFTER UPDATE ON accounts FOR EACH ROW WHEN
(OLD.balance IS DISTINCT FROM NEW.balance) ....

--
View this message in context: http://postgresql.1045698.n5.nabble.com/Trigger-AFTER-and-BEFORE-with-specific-column-changed-tp5610712p5611501.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.

#4Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Albert (#3)
Re: Trigger.. AFTER and BEFORE with specific column changed

On 04/01/2012 10:10 PM, Albert wrote:

*i get:*

Syntax error at or near 'WHEN'
LINE 1: ... check_update AFTER UPDATE ON accounts FOR EACH ROW WHEN
(OLD.balance IS DISTINCT FROM NEW.balance) ....

Hmmm. So two questions:

What happens if you copy the example in the docs exactly and use NEW.*
and OLD.*?

What is the table definition for accounts?

--
View this message in context: http://postgresql.1045698.n5.nabble.com/Trigger-AFTER-and-BEFORE-with-specific-column-changed-tp5610712p5611501.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.

--
Adrian Klaver
adrian.klaver@gmail.com

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Albert (#3)
Re: Trigger.. AFTER and BEFORE with specific column changed

Albert <oo_O2_oo@hotmail.com> writes:

*i get:*
Syntax error at or near 'WHEN'
LINE 1: ... check_update AFTER UPDATE ON accounts FOR EACH ROW WHEN
(OLD.balance IS DISTINCT FROM NEW.balance) ....

Does the BEFORE case work for you either? I'm suspicious that you
are using a PG version that predates WHEN-clause support in triggers.

regards, tom lane