At 05:28 AM 21/10/2011, you wrote: >--- In firebird-support@yahoogroups.com, Helen Borrie <helebor@...> wrote: >> >> >What is the analogous way to achieve this in Firebird (2.5) ? >> >> INSERT INTO emp (fruits) values ('mango') >> where not exists (select 1 from emp where fruits = 'mango') > >Strange... when I try to do this (via flamerobin or ibexpert) it does not >recognize the "Where" token (Dynamic SQL error -104, Token unknown, where ). >Must be something simple :(
Not strange - I put you wrong there. Sorry! Of course, INSERT won't accept a WHERE clause. >Here is what I am trying: > >I have a table like the following: >CREATE TABLE T1 ( > ID INTEGER NOT NULL, > TYPE INTEGER, > NAME VARCHAR(128), > SYSID INTEGER, > FLAG INTEGER >); > >ID has a generator so I don't want to insert a value for it. > >Here is the query I tried > >INSERT INTO T1 (type, name, sysid, flag) values (1, 'ZZZZZ', 1, 0) >WHERE NOT EXISTS (SELECT 1 FROM T1 WHERE name = 'ZZZZZ') > >My application is really to write a script that will be run once on a smallish >dataset (on the order of 1000 rows) so performance isn't really a big deal. > >Thanks for the pointer. I did look at INSERT OR UPDATE UPDATE OR INSERT - I get that wrong 50% of the time, too. ;-) >prior to posting but I do not want to UPDATE if there is a match so I didn't >think this applied. Would you like to try this: merge into t1 tab2 using t1 tab1 on tab1.name = tab2.name and tab1.name = 'ZZZZZ' when not matched then insert (type, name, sysid, flag) values (1, 'ZZZZZ', 1, 0) ./heLen