次のようなトリガーを作成しました。
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、ユーザーフィールド) VALUES(60, 1); クエリ OK、影響を受ける 1 行、12 個の警告 (0.00 秒)
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
編集: この特定のケースの警告は、トリガーには影響しません。ほとんどの場合、警告の原因となる cdr テーブルにデフォルト値がない追加の列です。簡単にするために、INSERT ステートメントは簡潔にしました。