Meine MySQL nach INSERT-Trigger funktioniert nicht? Warum?
Frage
Ich habe einen Trigger erstellt, die die folgenden ähnelt:
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;//
Es scheint durch in Ordnung zu gehen. Allerdings scheint es nicht aufgerufen wird, wenn ich es brauche. Hier ein Beispiel:
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
1 row in set (0.00 sec)
mysql> Einfügen in CDRs (billsec, Userfield) VALUES (60, 1); Abfrage OK, 1 Zeile betroffen, 12 Warnungen (0,00 sec)
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
EDIT: Die Warnungen in diesem speziellen Fall nicht den Abzug beeinflussen. Es ist vor allem zusätzliche Spalten, die keine Standardwerte in der cdr Tabelle, die die Warnungen verursachen. Aus Gründen der Einfachheit, hielt ich meine INSERT-Anweisung kurz.
Lösung
Es gibt 12 Warnungen generiert. Was sind sie?
ETA: Oh, warten Sie ... Sie müssen is not null
verwenden, anstatt <> null
. Jeder Vergleich mit null
wird immer wieder zurückkehren null
.