1. Unique keys
ALTER TABLE tableName
ADD CONSTRAINT uniqueKeyName UNIQUE(columnName1, columnName2);
2. First select and then insert or update
procedure insertRow(p_key1 in number, p_key2 in number, p_value in number)
is
cursor c1(v1 in number, v2 in number) is
select '1' from tableName
where columnName1 = v1
and columnName2 = v2;
dummy varchar2(1);
begin
open c1(p_key1, p_key2);
fetch c1 into dummy;
if sql%found then
update tableName
set valueColumn = p_value
where columnName1 = p_key1
and columnName2 = p_key2;
else
insert into tableName (columnName1, columnName2, valueColumn)
values (p_key1, p_key2, p_value);
end if;
end;
/
3. The MERGE-statement
MERGE INTO tableName tn
USING dual on (dual.dummy is not null
and tn.columnName1 = p_key1
and tn.columnName2 = p_key2)
WHEN MATCHED THEN
UPDATE set tn.valueColumn = p_value
WHEN NOT MATCHED THEN
insert (columnaName1, columnName2, valueColumn)
values (p_key1, p_key2, p_value);
4. update and then insert
procedure insertRow(p_key1 in number, p_key2 in number, p_value in number)
is
begin
update tableName
set valueColumn = p_value
where columnName1 = p_key1
and columnName2 = p_key2;
if sql%rowcount = 0 then
insert into tableName (columnName1, columnName2, valueColumn)
values (p_key1, p_key2, p_value);
end if;
end;
/
or
update tableName
set valueColumn = p_value
where columnName1 = p_key1
and columnName2 = p_key2;
insert into tableName (columnName1, columnName2, valueColumn)
select p_key1, p_key2, p_value
from dual
where not exists (select '1'
from tableName
where columnName1 = p_key1
and columnName2 = p_key2);
select p_key1, p_key2, p_value
from dual
where not exists (select '1'
from tableName
where columnName1 = p_key1
and columnName2 = p_key2);
5. first delete and then insert
procedure insertRow(p_key1 in number, p_key2 in number, p_value in number)
is
begin
delete from tableName
where columnName1 = p_key1
and columnName2 = p_key2;
insert into tableName (columnName1, columnName2, valueColumn)
values (p_key1, p_key2, p_value);
values (p_key1, p_key2, p_value);
end;
/
/
awesome examples..
ReplyDelete