繁体   English   中英

插入触发器后我的MySQL无法正常工作? 为什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM