| From: | Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc> |
|---|---|
| To: | Omar Bettin <o(dot)bettin(at)tiscali(dot)it> |
| Cc: | pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: Strange behavior on plpgsql trigger function in if comparison |
| Date: | 2008-02-02 11:50:04 |
| Message-ID: | 47A458EC.2070807@kaltenbrunner.cc |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Omar Bettin wrote:
> Hi,
>
> I have to compare an OLD.Value with a NEW.Value on PostgreSQL 8.2.4
> plpgsql trigger function:
>
> IF OLD.Value <> NEW.Value THEN
> ...
>
> but, if OLD.Value IS NULL and NOT NEW.Value IS NULL the previous IF does
> not work and I have to use this method:
>
> IF (OLD.Value <> NEW.Value) OR (OLD.Value IS NULL AND NOT NEW.Value IS
> NULL) THEN
> ...
>
> this works!
> Is that normal ?
yeah that is expected behaviour - NULL does not equal NULL. In cases
like that you might wnat to use:
IF OLD.Value IS DISTINCT FROM NEW.Value THEN
which handles NULL in the way you seem to expect it.
also look at
http://www.postgresql.org/docs/current/static/functions-comparison.html
for more details on that topic.
Stefan
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Gurjeet Singh | 2008-02-02 13:18:39 | Problem with site doc search |
| Previous Message | Omar Bettin | 2008-02-02 11:26:50 | Strange behavior on plpgsql trigger function in if comparison |