Question

J'ai créé un déclencheur semblable au suivant:

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;//

Cela semble aller bien. Cependant, cela ne semble pas invoquer quand j'en ai besoin. Voici un exemple:

mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
|             0 | 
+---------------+
1 row in set (0.00 sec)

mysql > insérer dans cdr (billsec, userfield) VALUES (60, 1); Requête OK, 1 ligne affectée, 12 avertissements (0,00 s)

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

EDIT: Les avertissements dans ce cas particulier n’affectent pas le déclencheur. Ce sont principalement les colonnes supplémentaires qui n'ont pas de valeurs par défaut dans la table cdr qui provoquent les avertissements. Dans un souci de simplicité, j’ai gardé le brief de ma déclaration INSERT.

Était-ce utile?

La solution

Il y a 12 avertissements générés. Que sont-ils?

ETA: Oh, attendez ... vous devez utiliser is not null plutôt que <> null. Toute comparaison avec null renverra toujours <=>.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top