Мой MySQL после триггера INSERT не работает? Зачем? - PullRequest
0 голосов
/ 21 октября 2008

Я создал триггер, похожий на следующий:

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> insert to cdr (billsec, userfield) VALUES (60, 1); Запрос в порядке, затронута 1 строка, 12 предупреждений (0,00 с)

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

EDIT: предупреждения в данном конкретном случае не влияют на триггер. В основном это дополнительные столбцы, которые не имеют значений по умолчанию в таблице cdr, которые вызывают предупреждения. Ради простоты я кратко изложил свое утверждение INSERT.

1 Ответ

1 голос
/ 21 октября 2008

Сгенерировано 12 предупреждений. Что они?

ETA: Ой, подождите ... вам нужно использовать is not null вместо <> null. Любое сравнение с null всегда вернет null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...