oracle trigger 范了一个巨大的错误 递归了

本文介绍了一个复杂的数据库触发器实现方案,用于在更新功能权限时自动调整相关联的父级菜单权限状态。通过判断子功能是否被激活来决定父菜单的权限状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE OR REPLACE TRIGGER UPT_PARENTFUN
AFTER UPDATE
ON DAPS.UT_ROLEFUNC
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_parentid varchar2(50);
v_count number;
BEGIN
if :new.isactive != :old.isactive then -- 如果修改了isactive

if to_number(:new.isactive) = 1 then
-- 如果修改功能为有权限,判断父菜单是否有权限,如果没有改为有
select f.parentid into v_parentid from ut_funcitem f where f.id = :new.funcid;

--if(v_count < 1) then
update Ut_Rolefunc r set r.isactive = 1
where r.roleid = :new.roleid and r.funcid = v_parentid ;
----错误----
--end if;
end if;
end if;
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值