遇到问题:A表插入数据使B表某个字段+1,按照MYSQL触发器编写SQL脚本
CREATE TRIGGER message_num BEFORE INSERT ON wx_push_message_temp FOR EACH ROW
UPDATE wx_message
SET num = num + 1
WHERE in_message = message
猜想:
1、当B表不存在响应数据会报错
2、当B表+1字段没有值时会自动+1
结果:
首先,触发器添加成功,但是在执行A表的插入时提示‘message’ where clause,不能够识别,同时A表数据也没有插入成功,猜想是MYSQL的回滚机制导致。继续猜测,感觉是因为跨表的问题,所以我又编写了如下SQL:
CREATE TRIGGER message_num BEFORE INSERT ON wx_push_message_temp t FOR EACH ROW
UPDATE wx_message m
SET m.num = m.num + 1
WHERE m.in_message = t.message
结果:执行改条SQL直接抛出异常,触发器并没有生成
后来网上查询了相应错误,最终SQL如下:
CREATE TRIGGER message_num BEFORE INSERT ON wx_push_message_temp FOR EACH ROW
UPDATE wx_message
SET num = num + 1
WHERE in_message = new.message
执行完成,并完美插入数据。
现在回答以上两个猜想:
1、false,当B表不存在数据时A表依然插入数据成功,B表不受任何影响
2、false,当B表+1字段默认没有给值为null时,A表插入成功,B表依然不受影响,只有当B表+1字段默认给0时,才会进行+1操作