Мой MySQL после триггера ВСТАВКИ не работает?Почему?

StackOverflow https://stackoverflow.com/questions/222806

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top