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、ユーザーフィールド) VALUES(60, 1); クエリ OK、影響を受ける 1 行、12 個の警告 (0.00 秒)

mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
|             0 | 
+---------------+

編集: この特定のケースの警告は、トリガーには影響しません。ほとんどの場合、警告の原因となる cdr テーブルにデフォルト値がない追加の列です。簡単にするために、INSERT ステートメントは簡潔にしました。

4

1 に答える 1

1

生成された12の警告があります。彼らは何ですか?

is not nullETA:ああ、待ってください...ではなく使用する必要があります<> null。との比較nullは常に。を返しnullます。

于 2008-10-21T18:01:28.280 に答える