0

我创建了一个类似于以下内容的触发器:

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 语句保持简短。

4

1 回答 1

1

生成了 12 个警告。这些是什么?

ETA:哦,等等……你需要使用is not null而不是<> null. 任何与 的比较null总是会返回null

于 2008-10-21T18:01:28.280 回答