我建了一个触发器
CREATE or replace TRIGGER ADS.DEL_BASE_INFO 
AFTER DELETE ON ADS.BASE_INFO
FOR EACH ROW
BEGIN
  INSERT INTO DEL_DATA(REC_ID,TABLE_NAME,FIELD_NAME,DATA_ID,DEL_TIME) 
  VALUES(SEQ_DEL_DATA.NEXTVAL,'BASE_INFO','BASE_ID',:old.BASE_ID,sysdate);
END;建立的时候没有报错.
也用过
可是不知为什么,今儿就忽然不行了.
请问这个语句有错误吗?

解决方案 »

  1.   

    如果以前这个触发器能正常使用,那可能就是表上做过DDL。
    先检查BASE_INFO和DEL_DATA表结构是否被修改了。
    如没修改alter trigger ADS.DEL_BASE_INFO compile;试试。
      

  2.   

    检查一下SEQ_DEL_DATA序列是否存在,:old.BASE_ID来自何方?sysdate是否可以换成sysdate()。再compile一下,把错误贴出来。
      

  3.   

    首先,不行,那具体的错误是什么
    其次,调试一下,
    INSERT INTO DEL_DATA(REC_ID,TABLE_NAME,FIELD_NAME,DATA_ID,DEL_TIME) 
      VALUES(SEQ_DEL_DATA.NEXTVAL,'BASE_INFO','BASE_ID',:old.BASE_ID,sysdate); 
    换成具体的值,有错误吗
      

  4.   

    谢谢大家了。我找到问题了。因为我的程序有个界面,可以直接执行sql语句但是执行触发器的时候,最后的分号不让写。我就去掉了。
    后来到oracle控制台发现加上分号重新建立,就可以了。