没有必要写触发器吧,参考delete from tb where id = @id; insert into tb (...) values (...);
oracle 有merge语句可以实现你的要求 没有该行数据则插入,有该行数据则更新
那也要找个主键, 或者分开来写SQL也是
create or replace trigger AK on tablename before insert is var1 tabename.column%type;----关键字来判断记录是否存在 var2 tablename%rowtype;----如果存在则把插入的数据放在记录中,修改数据时仍要用 varflag number;---标示是否表中已经存在 begin select 关键字 into var form :new;---得到插入数据的关键字 select n.* into var2 from :new--得到插入数据 select nvl(max(1),0) into varflag from tablename where tablename.column=关键字;--判断表中存在 if varflag=1 then update tablename set tablename.columns=var2 where tablename.column=关键字;修改表中存在的数据行 end if end
insert into tb (...) values (...);
没有该行数据则插入,有该行数据则更新
或者分开来写SQL也是
is
var1 tabename.column%type;----关键字来判断记录是否存在
var2 tablename%rowtype;----如果存在则把插入的数据放在记录中,修改数据时仍要用
varflag number;---标示是否表中已经存在
begin
select 关键字 into var form :new;---得到插入数据的关键字
select n.* into var2 from :new--得到插入数据
select nvl(max(1),0) into varflag from tablename where tablename.column=关键字;--判断表中存在
if varflag=1 then
update tablename set tablename.columns=var2 where tablename.column=关键字;修改表中存在的数据行
end if
end