触发器实际使用时容易碰到的几个小坑

Can't update table XXX in stored function/trigger because it is already used by statement which invoked this

原因是在update触发时使用update语句,导致循环调用。直接使用set可以避免此问题。

以下为正确语句(MySQL)

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `dev_push`.`set_godcode` BEFORE UPDATE
ON `dev_push`.`sms_checkcode`
FOR EACH ROW BEGIN
IF new.mobile = '15958006234'
 THEN
SET new.check_code = '1234';
END IF;
END$$

DELIMITER ;

 

另外需要避免的是,使用判断条件,无论是where,或者如上语句使用if判断,都应使用new.mobile,如果直接用mobile会当做系统变量System variable,而实际上显然是不存在此系统变量的于是报错。

转载于:https://www.cnblogs.com/gaozy/p/4538680.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值