INSERTトリガー後のMySQLが機能しませんか?どうして?
質問
次のようなトリガーを作成しました:
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); クエリOK、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
との比較は常に<=>を返します。
所属していません StackOverflow