我想在 savings_type 表插入数据的时候用触发器自动往里面插入主键值,也是自增列。表结构如下:
![](/img/2015/10/17/11104650.png)
序列:
![](/img/2015/10/17/11104651.png)
触发器:
![](/img/2015/10/17/11104652.png)
错误提示:
![](/img/2015/10/17/11104653.png)
插入语句: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;