Meu MySQL após INSERIR gatilho não está funcionando? Por quê?
Pergunta
Eu criei um gatilho que se assemelha a seguinte:
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;//
Parece que passar por tudo bem. No entanto, não parecem ser invocando quando eu precisar dele para. Aqui está um exemplo:
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
1 row in set (0.00 sec)
mysql> inserir valores de CDR (billsec, UserField) (60, 1); Query OK, 1 linha afetada, 12 advertências (0.00 sec)
mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
| 0 |
+---------------+
EDIT: As advertências neste caso específico não afetam o gatilho. É principalmente colunas adicionais que não têm valores padrão na tabela de cdr que causa os avisos. Por uma questão de simplicidade, eu mantive minha instrução INSERT breve.
Solução
Há 12 avisos gerados. O que são eles?
ETA: Oh, espere ... você precisa is not null
uso ao invés de <> null
. Qualquer comparação com null
sempre retornará null
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow