oracle 触发器 当员工的状态修改为离职时,将员工的信息插入到员工离职表中

createorreplacetriggerdel_emp_insert_empleaveafterupdateonemployeeforeachrowdeclarenv... create or replace trigger del_emp_insert_empleave
after update on employee for each row
declare
n varchar2(10);
o_status number;
o_id number(5);
o_name varchar2(20);
o_dept_id number(5);
begin
n := :new.emp_status;
o_id := :old.emp_id;
o_status := :old.status;
o_name := :old.emp_name;
o_dept_id := :old.dept_id;
if n='离职' and o_status=0 then
insert into employeeleave(emp_id,emp_name,dept_id,el_type,el_time,status) values(o_id,o_name,o_dept_id,'外调',sysdate,0);
end if;
if n='离职' and o_status=1 then
insert into employeeleave(emp_id,emp_name,dept_id,el_type,el_time,status) values(o_id,o_name,o_dept_id,'请辞',sysdate,0);
end if;
end;

错误:
ORA-04091: 表 SU.EMPLOYEE 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "SU.TI_EMPLOYEELEAVE", line 32
ORA-04088: 触发器 'SU.TI_EMPLOYEELEAVE' 执行过程中出错
ORA-06512: 在 "SU.DEL_EMP_INSERT_EMPLEAVE", line 17
ORA-04088: 触发器 'SU.DEL_EMP_INSERT_EMPLEAVE' 执行过程中出错
我测试就是insert 有错,谁能帮我下,完整的示例
离职表没有主键,就是引用了下员工表的主键!
展开
 我来答
wangzhiqing999
2011-04-27 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3355万
展开全部
你是不是在 employeeleave 表上面, 还有一个名字叫 TI_EMPLOYEELEAVE 的触发器?
代码是判断
当有新的 离职员工记录插入的时候, 去删除 employee 的记录?
追问
你邮箱是什么,给我,我把那个的代码发给你,给你加分!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式