要建一个触发器使增加记录后ID自动增加
CREATE OR REPLACE TRIGGER WATERLEVEL_INSERT AFTER INSERT
 ON WATER.TB_P02_LEVEL FOR EACH ROW
begin
    UPDATE WATER.TB_P02_LEVEL SET id=LEVEL_SEQUENCE.NEXTVAL WHERE ST_PS_NAME = :NEW.ST_PS_NAME AND DT_TIME=:new.DT_TIME;
end;
/提示 表WATER.TB_P02_LEVEL 发生了变化 触发器不能读它 ,网上查了一些没能得到解决,求教。

解决方案 »

  1.   

    这里根本不需要trigger,序列LEVEL_SEQUENCE.NEXTVAL 每次都返回自动增加的不同的值的。
      

  2.   

    所以直接insert的时候调LEVEL_SEQUENCE.NEXTVAL的值就可以了?单手动数据库添加的时候呢?
      

  3.   


    触发表和被触发表是同一个表,无法锁定当前记录;
    为何要在新增的同时要update表的id呢?那么你在insert的同时直接插入LEVEL_SEQUENCE.NEXTVAL 值不就好了吗;
      

  4.   


    CREATE OR REPLACE TRIGGER WATERLEVEL_INSERT before INSERT 
    ON WATER.TB_P02_LEVEL FOR EACH ROW 
    begin 
       SELECT LEVEL_SEQUENCE.NEXTVAL INTO :NEW.ID FROM DUAL;
    end; 
      

  5.   

    这还写个触发器干吗
    insert时直接写进去不就行了