用 存储过程时 总提示 表TABLE_HR 发生了变化, 触发器/函数不能读它
如题目所示,
定义如下:
--执行:
我希望更改 position 项值的时候 触发自动更改 power*** 几项的值。不过总是提示:
ORA-04091: 表 JDKING.TABLE_HR 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "JDKING.AFTER_CGPOSITION_THEN_CGPOWER", line 4
ORA-04088: 触发器 'JDKING.AFTER_CGPOSITION_THEN_CGPOWER' 执行过程中出错
ORA-06512: 在 "JDKING.CGPOS", line 10
ORA-06512: 在 line 1
学生刚刚开始学习plsql~希望大牛们指点
~
定义如下:
-----更改职位的存储过程:
create or replace procedure CgPos(
pos in table_hr.position%type,
id in table_hr.worker_id%type ) is
cn number;
begin
select count(*) into cn from table_hr where worker_id=id;
if cn>0 then
if pos='hr' or pos='采购' or pos = '销售' or pos =NULL then
update table_hr set position=pos where worker_id=id; --就这一句重复调用触发器
else dbms_output.put_line('职位不对!无效执行!');
rollback;
end if;
else dbms_output.put_line('没有该ID员工!无效执行!');
rollback;
end if;
commit;
end CgPos;
/
-----更改职位的触发器 修改模块儿权利值://========================就这一块儿有问题
create or replace trigger after_CgPosition_then_CgPower
after update of position on table_hr
for each row
begin
if :old.position ='hr' then
update table_hr set powerhr=1, powerBuy=0, powerSell=0, powerScan=1 where worker_id=:new.worker_id;
elsif :old.position ='采购' then
update table_hr set powerhr=0, powerBuy=1, powerSell=0, powerScan=1 where worker_id=:new.worker_id;
elsif :old.position ='销售' then
update table_hr set powerhr=0, powerBuy=0, powerSell=1, powerScan=1 where worker_id=:new.worker_id;
elsif :old.position =NULL then
update table_hr set powerhr=0, powerBuy=0, powerSell=0, powerScan=0 where worker_id=:new.worker_id;
else dbms_output.put_line('职位不对!无效执行!');
end if;
end after_CgPosition_then_CgPower;
/
--执行:
我希望更改 position 项值的时候 触发自动更改 power*** 几项的值。不过总是提示:
ORA-04091: 表 JDKING.TABLE_HR 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "JDKING.AFTER_CGPOSITION_THEN_CGPOWER", line 4
ORA-04088: 触发器 'JDKING.AFTER_CGPOSITION_THEN_CGPOWER' 执行过程中出错
ORA-06512: 在 "JDKING.CGPOS", line 10
ORA-06512: 在 line 1
学生刚刚开始学习plsql~希望大牛们指点
~
...全文
相关推荐
oracle hr用户创建脚本
**创建存储过程和函数**:编写处理HR业务逻辑的PL/SQL代码。6. **创建触发器**:根据需要设置触发器,如在插入员工时自动更新部门人数。
Oracle HR Schema 脚本实战指南
Oracle HR Schema是Oracle数据库管理系统中的一个示例模式,用于人力资源管理的模拟。该模式包含了一系列模拟真实世界业务场景的表和关系,如员工信息、部门、岗位、薪资等,为数据库学习者提供了一个丰富的实践环境。在数据库设计中,约束是用来确保数据的准确性和一致性的规则。它们是数据库管理系统中用来限制列或表中数据值的机制。约束定义了表中允许的特定数据值和值的组合,是数据完整性的核心组成部分。下面是四种常见的约束类型及其定义:主键(Primary Key)约束。
游标、存储过程和触发器.pptx
例如,通过隐式游标从HR.Departments表中获取Department_name字段的值,可以声明一个变量并使用INTO子句将结果赋值给该变量。
oracle hr创建脚本
```sql@human_resources```最后,根据具体业务需求,可能还需要配置安全策略、触发器、存储过程和工作流等。这些都是通过额外的PL/SQL脚本来实现的。
hr_T-sql.rar
标题 "hr_T-sql.rar" 暗示我们关注的是与人力资源(HR)相关的 SQL(结构化查询语言)脚本,可能是一个数据库架构或者数据处理的示例。


基础和管理
