質問

次のようなトリガーを作成しました:

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との比較は常に<=>を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top