Мой MySQL после триггера ВСТАВКИ не работает?Почему?
Вопрос
Я создал триггер, который похож на следующий:
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, поле пользователя) ЗНАЧЕНИЯ (60, 1);Запрос ОК, затронута 1 строка, 12 предупреждений (0,00 секунды)
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
Редактировать:Предупреждения в данном конкретном случае не влияют на срабатывание триггера.Предупреждения в основном вызывают дополнительные столбцы, которые не имеют значений по умолчанию в таблице cdr.Для простоты я сохранил свое заявление о вставке кратким.
Решение
Сгенерировано 12 предупреждений.Что это такое?
ETA:О, подожди...вам нужно использовать is not null
вместо того , чтобы <> null
.Любое сравнение с null
всегда будет возвращаться null
.