At 10:34 AM 21/10/2011, gastrocus wrote:
>--- In firebird-support@yahoogroups.com, "gastrocus" <gastrocus@...> wrote:
>
>> > 
>> > 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)
>> > 
>> 
>> That works like a charm!
>> Thanks Helen.
>
>Whoops, I spoke too soon as I had tested it on a table with 1 row first and it 
>appeared to work.
>
>The above statement seems to do a separate insert for each row in table which 
>does not match the test. 
>
>So, when I tested it on a table which had 100 rows (non matching the 'ZZZZZ' 
>test), it inserted 100 new rows, each with a 'ZZZZ' name. 

Oops, sorry about that!  I couldn't test it as my 2+ servers are otherwise 
occupied at the moment. Will shut up in future when I can't test something 
abstruse.

The rdb$database trick is a workaround so it's good to know it worked out for 
you.  As Paul (and others) commented though, a SP would be more elegant.  I 
shied away from suggesting it because you had said you wanted to script this 
operation.  If the plan was run a DML script through isql, you might want to 
rethink the methodology, if this is a thing you have to do regularly...a SP or 
a GTT (or both in combination) would serve your purpose more effectively.

./hb











>------------------------------------
>
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>Visit http://www.firebirdsql.org and click the Resources item
>on the main (top) menu.  Try Knowledgebase and FAQ links !
>
>Also search the knowledgebases at http://www.ibphoenix.com 
>
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>Yahoo! Groups Links
>
>
>

Reply via email to