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.

Foi útil?

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
scroll top