Problema de DELETE dentro de un trigger MYSQL
ESTE TRIGGER SE DISPARA CADA VEZ QUE SE INSERTA Y QUE SE ACTUALIZA UNA FILA.. DEBE SER SOLO CADA VEZ QUE SE ACTUALIZA.. QUE HAGO MAL?
CREATE TRIGGER migra_online
AFTER UPDATE ON calls
FOR EACH ROW
BEGIN
DECLARE id integer(10);
DECLARE phone varchar(32);
DECLARE fecha_llamada datetime;
DECLARE duration integer(10);
DECLARE status varchar(32);
DECLARE conta integer(10);
DECLARE cod_operador varchar(32);
DECLARE situacion_cliente varchar(250);
DECLARE fec_promesa_pago varchar(10);
DECLARE promesa_pago varchar(250);
DECLARE fec_proximo_llamado varchar(250);
DECLARE comentario varchar(250);
DECLARE nro_campana varchar(128);
DECLARE cod_cliente varchar(128);
SET @id=old.id;
SET @phone=new.phone;
SET @status=new.status;
SET @fecha_llamada=new.fecha_llamada;
SET @duration=new.duration;
IF (@status = 'Success') OR (@status = 'Failure') THEN
SET @cod_operador = (SELECT B.number
FROM calls A, agent B
WHERE A.id_agent = B.id
AND A.id = @id);
SET @situacion_cliente = (SELECT D.value
FROM form_data_recolected D, form_field E
WHERE D.id_form_field = E.id
AND D.id_form_field = 1
AND D.id_calls = @id);
SET @fec_promesa_pago = (SELECT D.value
FROM form_data_recolected D, form_field E
WHERE D.id_form_field = E.id
AND D.id_form_field = 2
AND D.id_calls = @id);
SET @promesa_pago = (SELECT D.value
FROM form_data_recolected D, form_field E
WHERE D.id_form_field = E.id
AND D.id_form_field = 5
AND D.id_calls = @id);
SET @fec_proximo_llamado = (SELECT D.value
FROM form_data_recolected D, form_field E
WHERE D.id_form_field = E.id
AND D.id_form_field = 6
AND D.id_calls = @id);
SET @comentario = (SELECT D.value
FROM form_data_recolected D, form_field E
WHERE D.id_form_field = E.id
AND D.id_form_field = 7
AND D.id_calls = @id);
SET @nro_campana = (SELECT value
FROM call_attribute
WHERE columna = "Nro.Camp."
AND id_call = @id);
SET @cod_cliente = (SELECT value
FROM call_attribute
WHERE columna = "Cod.Cliente"
AND id_call = @id);
UPDATE migra
SET telefono = @phone,
estado_llamada = @status,
cod_operador = @cod_operador,
fec_hora_llamado = @fecha_llamada,
duracion_segundos = @duracion,
situacion_cliente = @situacion_cliente,
fec_promesa_pago = @fec_promesa_pago,
promesa_pago = @promesa_pago,
fec_proximo_llamado = @fec_proximo_llamado,
comentario = @comentario,
nro_campana = @nro_campana,
cod_cliente = @cod_cliente,
fec_mov = now()
WHERE id = @id;
SET @conta = (SELECT ROW_COUNT());
IF @conta < 1 THEN
INSERT INTO migra
(id,
telefono,
estado_llamada,
cod_operador,
fec_hora_llamado,
duracion_segundos,
situacion_cliente,
fec_promesa_pago,
promesa_pago,
fec_proximo_llamado,
comentario,
nro_campana,
cod_cliente,
fec_mov,
procesado)
VALUES ((@id),
(@phone),
(@status),
(@cod_operador),
(@fecha_llamada),
(@duration),
(@situacion_cliente),
(@fec_promesa_pago),
(@promesa_pago),
(@fec_proximo_llamado),
(@comentario),
(@nro_campana),
(@cod_cliente),
(now()),
(0));
END IF;
END IF;
END;