mysql触发器

MySQL的触发器是一种维护数据库完整性和一致性的工具,虽然其隐藏的特性增加了问题排查的难度,但能直接操作数据库,简化代码。在案例中,当主账户权限扩大时,通过触发器更新子账户权限表,防止未授权权限的自动获取。触发器的实现涉及DECLARE、NEW/OLD关键字、DELIMITER及BEGIN-END块的使用。
摘要由CSDN通过智能技术生成

今天我们来聊聊mySql的触发器

如果想要看触发器的定义那么请到mysql的官网;

我这里只是讲讲我对于触发器的理解和使用;

【综述】

首先触发器是针对数据库层面的一种维护收据完整性和一致性的手段,但是触发器在实际应用中也存在着明显的劣势,因为触发器在代码层面是不可见的,所以出现问题排查的困难就上升了一个维度。但是好处也是显而易见的,可以直接操作数据库减少了代码量。

【使用案例】

主账户从自身拥有的权限中分配一部分权限给子账户,由于之前的设计是将这些权限反向的存入表中的,也就是说表中的数据是主账户拥有的权限和子账户不拥有的权限的交集。这样就存在一个问题:那么主账户的权限扩大之后,子账户的权限未经过授权就拥有了这些权限,显然这是不可取的。

现在解决方案就是使用触发器来做。当主账户的权限扩大的同时就往这个反向表中增加对应的记录。这样保证了以上问题不会发生。

【案例触发器源码】

 

DROP TRIGGER IF EXISTS insert_user_reverse_auth_trigger;
DELIMITER $$
CREATE TRIGGER insert_user_reverse_auth_trigger
  AFTER INSERT
  ON uc_user_role
  FOR EACH ROW
  BEGIN
    DECLARE opt_role_id BIGINT;
    DECLARE done_cursor1 INT DEFAULT 0;
    DECLARE func_id_temp BIGINT;
    DECLARE cur_role CURSOR FOR SELECT id
                                FROM uc_role
                                WHERE 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值