Re: problem with inserting a generated seq no into not

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: mike <mike(at)bristolreccc(dot)co(dot)uk>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: problem with inserting a generated seq no into not
Date: 2004-06-08 14:57:17
Message-ID: 20040608075223.P51765@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


> I have the following generic query which I am trying to use to insert
> into a 3 field table
>
> INSERT INTO tb_files (subj, area, file_no) select '4', '8',(SELECT CASE
> WHEN (4||8) NOT IN (SELECT (subj||area) FROM tb_files) THEN '1' ELSE

That's not really a good way to detect the existance of a row with those
values. If either subj or area is allowed to be NULL, wierdness occurs
(*). Even if neither is allowed to be null, if the values can ever have
more than one digit wierdness occurs.

(*) - IIRC, even if no row exists with (4,8) as (subj,area), if there's a
row where subj || area is NULL, you will never get true from the NOT IN
clause and the second alternative will always be chosen. NULLs and IN
don't play very well together.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2004-06-08 14:58:52 Re: core dump
Previous Message Oliver Elphick 2004-06-08 14:39:06 Re: encrypted passwords