Wenn man einen Datensatz updaten möchte, aber nicht sicher ist, ob er bereits existiert kann man das Kommando "MERGE INTO" nutzen. Welches in einem Abwasch bspw. eine "Select count.."-Abfrage macht und dann entscheidet, ob ein Insert oder ein update notwendig ist.
Ich brauche dies aber des öftern für einen anderen Konstrukt. Ich möchte eine Entscheidung ob ich ein "Select ID ..." oder ein "Insert ... returning ID ..." brauche in einem Befehl (ID ist bei mir immer der PK) Da ich vermute, dass ich damit nicht der einzige bin (ich im Netz aber nichts finde; bei "Select oder Insert" findet man zu viel), würde ich gern mal wissen, ob es dafür etwas gibt.
Bisher löse ich das folgendermaßen:
SQL-Code:
Select count(ID)
into c
from ...
if c=0
then
begin
insert into dbt_Channel ...
returning ID
into result;
commit;
exception
when dup_val_on_index
then
c:=1;
-- falls zwischenzeitlich ein zweiter User einen Datensatz eingefügt hat?!?
when others
then
raise;
end;
end if;
if c>0
then
Select ID
into result ...
end if;
return(result);
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.