MadHatter wrote:
If I have an expression (a or b)a where a=TRUE and b=FALSE, why is b
evaluated? Any true operand before an or operator means the entire
expression is true .
There is no "before" - PG makes no guarantee about evaluation order.
Don't forget a,b might well be subqueries and you don't want to prevent
PG from applying optimisations.
---------------------------- EXAMPLE
create or replace function pinsusers() returns trigger as
$$
declare msg varchar;
begin
--THROWS EXCEPTION when ((TG_OP = 'INSERT') is TRUE "record old
is not assigned yet"
msg = ((TG_OP = 'INSERT') or (new.password<>old.password));
You're looking at nested IF .. THEN's I'm afraid. Or using pl/perl or
similar.
--
Richard Huxton
Archonet Ltd
--
Sent via pgsql-general mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general