请教oracle触发器,当存在orderid这个记录则更新其他字段,不存在则插入
这样的触发器应该怎样写?
我以前在mssql用instead of 触发器就可以写。
在oracle里出现递归现象。而且不能在表上建立instead of 触发器
求教

解决方案 »

  1.   

    insert一个表的时候,写入的orderid在这个表存在,则更新这个表的其他字段,不存在则插入,是这样的么?
      

  2.   

    实测数据:CREATE TABLE T153
    (
        ID NUMBER(2),
        MyDesc VARCHAR2(20)
    );INSERT INTO T153 VALUES(1, 'A');
    INSERT INTO T153 VALUES(2, 'B');
    INSERT INTO T153 VALUES(3, 'C');
    实测结果:
      

  3.   

    触发器代码:CREATE OR REPLACE TRIGGER TriggerInsertOrUpdate
    BEFORE INSERT ON T153  
    FOR EACH ROW
    DECLARE
        vCount NUMBER(1) := 0;
    BEGIN
        SELECT COUNT(1) INTO vCount FROM T153 WHERE ID = :NEW.ID;
        IF vCount = 1 THEN        
            DELETE FROM T153 WHERE ID = :New.ID;
        END IF;
    END TriggerInsertOrUpdate;
      

  4.   

    在oracle中也可以写
    用before insert on Tab
    或after ....就可以了instead of 在oracle中也可以用,只不用用于试图触发器
      

  5.   

    Sorry!谢谢大家帮忙。。
    我好像会出现死循环,不停地insert。因为我没有先删除的。。后来搞不店就换成存储过程啦。。
    谢谢大家帮忙