mysql 触发器条件判断偶尔失效_MySQL触发器使用时遇到的坑

在使用MySQL的触发器的过程中遇到一个比较蛋疼的问题。

报错信息如下:

![](https://box.kancloud.cn/5879969c18c203d96e83ad0a70b51254_1089x364.jpg)

于是查看下数据库中的triggers触发器的定义语句:

~~~

mysql> SHOW TRIGGERS\G

*************************** 1. row ***************************

Trigger: items_comment_insert

Event: INSERT

Table: hz_items_comment

Statement: BEGIN

UPDATE hz_items SET comment_count = comment_count + 1 WHERE id = new.item_id;

END

Timing: BEFORE

Created: NULL

sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

Definer: root@localhost

character_set_client: utf8

collation_connection: utf8_general_ci

Database Collation: latin1_swedish_ci

*************************** 2. row ***************************

Trigger: items_comment_delete

Event: DELETE

Table: hz_items_comment

Statement: BEGIN

UPDATE hz_items SET comment_count = comment_count - 1 WHERE id = old.item_id;

END

Timing: AFTER

Created: NULL

sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

Definer: root@localhost

character_set_client: utf8

collation_connection: utf8_general_ci

Database Collation: latin1_swedish_ci

2 rows in set (0.00 sec)

~~~

在上面的定义语句中我们看到了`Definer`触发器的定义者,那是因为在svn测试服务器的连接用户为luo_account用户。

**解决方案**

使用shell登录Linux终端,删除之前定义的触发器语句,并执行新的语句。

查看当前连接的用户:

~~~

mysql> \s

--------------

mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper

Connection id:1339

Current database:www_welltrend

Current user:root@localhost

SSL:Not in use

Current pager:stdout

Using outfile:''

Using delimiter:;

~~~

具体执行语句:

~~~

DROP TRIGGER items_comment_insert;

DROP TRIGGER items_comment_delete;

DELIMITER $

CREATE TRIGGER items_comment_insert BEFORE INSERT ON hz_items_comment

FOR EACH ROW BEGIN

UPDATE hz_items SET comment_count = comment_count + 1 WHERE id = new.item_id;

END;

$

DELIMITER ;

DELIMITER $

CREATE TRIGGER items_comment_delete AFTER DELETE ON hz_items_comment

FOR EACH ROW BEGIN

UPDATE hz_items SET comment_count = comment_count - 1 WHERE id = old.item_id;

END;

$

DELIMITER ;

~~~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值