| 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: | Whole Thread | Raw Message | 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.
| 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 |