Código MySQL:
Ver original
SET old_id_num_serie
= OLD.id_num_serie
;
SET new_id_num_serie
= NEW.id_num_serie
;
SET old_id_tipo
= OLD.id_tipo
;
SET new_id_tipo
= NEW.id_tipo
;
SET old_fecha_alta
= OLD.fecha_alta
;
SET new_fecha_alta
= NEW.fecha_alta
;
SET old_fecha_baja
= OLD.fecha_baja
;
SET new_fecha_baja
= NEW.fecha_baja
;
SET old_modelo
= OLD.modelo
;
SET new_modelo
= NEW.modelo
;
SET old_id_proveedor
= OLD.id_proveedor
;
SET new_id_proveedor
= NEW.id_proveedor
;
SET old_id_fabricante
= OLD.id_fabricante
;
SET new_id_fabricante
= NEW.id_fabricante
;
SET old_id_ubicacion
= OLD.id_ubicacion
;
SET new_id_ubicacion
= NEW.id_ubicacion
;
SET old_num_factura
= OLD.num_factura
;
SET new_num_factura
= NEW.num_factura
;
IF old_id_num_serie
!= new_id_num_serie
THEN SET cad
= CONCAT("id_num_serie:",old_id_num_serie
,":",new_id_num_serie
,";");
IF old_id_tipo
!= new_id_tipo
THEN SET cad
= CONCAT(cad
,"id_tipo:",old_id_tipo
,":",new_id_tipo
,";");
SET cad
= CONCAT(cad
,"dni:",old_dni
,":",new_dni
,";");
IF old_fecha_alta
!= old_fecha_alta
THEN SET cad
= CONCAT(cad
,"fecha_alta:",old_fecha_alta
,":",new_fecha_alta
,";");
IF old_fecha_baja
!= new_fecha_baja
THEN SET cad
= CONCAT(cad
,"fecha_baja:",old_fecha_baja
,":",new_fecha_baja
,";");
IF old_modelo
!= new_modelo
THEN SET cad
= CONCAT(cad
,"modelo:",old_modelo
,":",new_modelo
,";");
IF old_id_proveedor
!= new_id_proveedor
THEN SET cad
= CONCAT(cad
,"id_proveedor:",old_id_proveedor
,":",new_id_proveedor
,";");
IF old_id_fabricante
!= new_id_fabricante
THEN SET cad
= CONCAT(cad
,"id_fabricante:",old_id_fabricante
,":",new_id_fabricante
,";");
SET cad
= CONCAT(cad
,"uso:",new_uso
,":",old_uso
,";");
IF old_id_ubicacion
!= new_id_ubicacion
THEN SET cad
= CONCAT(cad
,"id_ubicacion:",old_id_ubicacion
,":",new_id_ubicacion
,";");
IF old_num_factura
!= new_num_factura
THEN SET cad
= CONCAT(cad
,"num_factura:",old_num_factura
,":",old_num_factura
,";");
(operacion, usuario_gestion, permiso, tabla, clave_primaria, campo_valor, fecha_movimiento)
VALUES ('Update', 'user', 'permiso', 'dispositivos', new_id_num_serie
, cad
, SYSDATE());
Sin utilizar un bucle sólo he podido hacerlo funcionar de esta forma. Cómo podría mejorar el trigger y ahorrarme líneas de código ¿? No me parece nada eficiente.