Я создал триггер, похожий на следующий:
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.