我创建了一个类似于以下内容的触发器:
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&GT;插入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语句保持简短。
答案 0 :(得分:1)
产生了12个警告。它们是什么?
ETA:哦,等等......你需要使用is not null
而不是<> null
。与null
的任何比较都将始终返回null
。