各位大侠,国庆快乐。小弟现在想做一个触发器,在数据插入表的时候,先判断表中是否有该数据,如果有的话,则把INSERT语句,改为UPDATE。可以这样做吗?哪位大侠能给个示例?小弟先谢过了。

解决方案 »

  1.   

    没有必要写触发器吧,参考delete from tb where id = @id;
    insert into tb (...) values (...);
      

  2.   

    oracle 有merge语句可以实现你的要求
    没有该行数据则插入,有该行数据则更新
      

  3.   

    那也要找个主键,
    或者分开来写SQL也是 
      

  4.   

    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