PL/PGSQL: why IF test the whole condition before failing or not?

From: Suporte PK <fknoedt(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: PL/PGSQL: why IF test the whole condition before failing or not?
Date: 2009-08-18 21:23:42
Message-ID: 4A8B1BDE.6000607@pksoftware.com.br
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi list,

I'm having trouble with - believe me! - the IF operator on a PL/PGSQL
function used by a trigger.

I'm using one unique function to process the three triggers events
(delete, update and insert), but when I reference OLD or NEW on a IF
CONDITION, I get an error even when testing BEFORE if it's a UPDATE
event or not.

example:

IF TG_OP = 'UPDATE' AND OLD.field != NEW.field THEN
...
END IF;

The question is: if the trigger was not fired by an UPDATE event,
shouldn't it make the first test and then ignore the rest of the condition?

I know that some languages work like this (testing the whole condition)
while others don't, but I searched for an alternative without success.

Any advice would be much appreciated!

Thanks in advance

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2009-08-18 21:34:28 Re: PL/PGSQL: why IF test the whole condition before failing or not?
Previous Message Andre Lopes 2009-08-18 21:22:01 Access Control System - Design