今天我们来聊聊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