[英]My MySQL after INSERT trigger isn't working? Why?
我创建了一个类似于以下内容的触发器:
delimiter //
CREATE TRIGGER update_total_seconds_on_phone AFTER INSERT
ON cdr
FOR EACH ROW
BEGIN
IF NEW.billsec > 0 AND NEW.userfield <> NULL THEN
UPDATE foo
SET total_seconds = total_seconds + NEW.billsec
WHERE phone_id = NEW.userfield;
END IF;
END;//
看来一切顺利。 但是,在我需要时似乎没有调用它。 这是一个例子:
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
1 row in set (0.00 sec)
mysql>插入cdr(billsec,userfield)VALUES(60,1); 查询正常,影响1行,12条警告(0.00秒)
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
编辑:在这种情况下,警告不会影响触发器。 导致警告的主要是其他列,这些列在cdr表中没有默认值。 为了简单起见,我将INSERT语句保持简短。
生成12条警告。 这些是什么?
ETA:哦,等等...您需要使用is not null
而不是<> null
。 任何与null
比较将始终返回null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.