当前位置: 代码迷 >> Oracle开发 >> ORACLE触发器无效且未通过重新验证,
  详细解决方案

ORACLE触发器无效且未通过重新验证,

热度:394   发布时间:2016-04-24 06:24:19.0
ORACLE触发器无效且未通过重新验证,急!!在线等……
我想在 savings_type 表插入数据的时候用触发器自动往里面插入主键值,也是自增列。表结构如下:


序列:


触发器:


错误提示:


插入语句:INSERT INTO savings_type(savings_name) VALUES('活期');

拜托了。小弟刚学ORACLE很菜。
------解决思路----------------------
你这触发器 after好像不行吧 
 编译提示错误 (ora-04084 无法更改此触发类型的NEW值)
既然是after ,那NEW.saving_id 已经写完了 你再into 修改不行吧

create or replace trigger tri_savings_type
--before 
  before insert on savings_type
  for each row
begin
  select seq_saving_type.nextval into :new.saving_id from dual;
end;

------解决思路----------------------
改成 before 的。
------解决思路----------------------
CREATE OR REPLACE TRIGGER tri_saving_type BEFORE INSERT
ON savings_type FOR EACH ROW
DECLARE
    INTEGRITY_ERROR  EXCEPTION;
    ERRNO            INTEGER;
    ERRMSG           CHAR(200);
    DUMMY            INTEGER;
    FOUND            BOOLEAN;

BEGIN
    SELECT seq_savings_type.NEXTVAL INTO :NEW.savings_id FROM DUAL;

--  ERRORS HANDLING
EXCEPTION
    WHEN INTEGRITY_ERROR THEN
       RAISE_APPLICATION_ERROR(ERRNO, ERRMSG);
END;
  相关解决方案