Zitat:
by mkinzler
[Zitat]
Zitat:
by jobo
Wieso nicht eine Updateanweisung und eine Insertanweisung für alles? Oder geht so ein Update in Firebird nicht?
FireBird unterstützt sowohl MERGE wie update or insert
Hab ich mal wieder zu undeutlich ausgedrückt. Es geht mir nicht um den Unterschied zwischen
einer Merge und
einer Insert oder Update Anweisung. Es geht mir um das Verfahren in der SP aus dem Tutorial. Hier sind es nicht
eine, sondern hundertausende solcher Anweisungen. Daher wundert mich die Angabe von 22 sec.
Wie gesagt, Insert hat bei mir unter 2 sec gedauert, update ca 0 sec, es gab ja keine. Merge habe ich nicht probiert.
Code:
for
select ID, CATEGORY_ID, TITLE, ACTOR, PRICE, SPECIAL
from IMPORT_PRODUCT
into :ID, :CATEGORY_ID, :TITLE, :ACTOR, :PRICE, :SPECIAL
do
begin
--is this record already there?
select count(*) from product where product.id=:id into :cnt;
if (cnt=0) then
begin
--no, so do an insert
insert into PRODUCT (ID, CATEGORY_ID, TITLE, ACTOR, PRICE, SPECIAL)
values (:ID, :CATEGORY_ID, :TITLE, :ACTOR, :PRICE, :SPECIAL);
end
else
begin
--yes, so update the record
update PRODUCT
set CATEGORY_ID = :CATEGORY_ID,
TITLE = :TITLE,
ACTOR = :ACTOR,
PRICE = :PRICE,
SPECIAL = :SPECIAL
where (ID = :ID);
end
end
--thats all