Guardar un update e insert a en distintas tablas.

Buen día.
Hola david quiero pedirle el favor de orientarme en lo siguiente:
Necesito almacenar en una tabla el update y en otra el insert, esto con el propósito de llevar un log de lo que se modifica. Lo estoy manejando con procedimiento almacenado. Tengo el siguiente código:
DELIMITER $
DROP PROCEDURE IF EXISTS `activos`.`modificar`$
CREATE PROCEDURE `modificar`(in $txtid int,in $txtusuario varchar(15),in $txtgrupo char(15),in $txtoficina int,in $txtpuesto varchar(20), in $txtactivo varchar(15),in $txtmaquina varchar(15),
in $txtserial varchar(15), in $txtso varchar(15),in $txtserialso varchar(15),in $txtip varchar(13), in $txtnompc varchar(15),in $txtram varchar(8),
in $txtoffi varchar(10),in $txtproc varchar(10),in $txtobservaciones tinytext,in $txtrespon char(20),in $txfecha date)
BEGIN
UPDATE datos SET usuario = $txtusuario,grupo=$txtgrupo, oficina = $txtoficina, puesto = $txtpuesto, activo = $txtactivo,
maquina = $txtmaquina, serialmaquina=$txtserial, so = $txtso, serialso = $txtserialso, ip = $txtip, nompc = $txtnompc, ram = $txtram,
office = $txtoffi, procesador = $txtproc, observaciones = $txtobservaciones, responsable = $txtrespon, fecha = DATE_FORMAT(NOW(), '%Y-%m-%d')
WHERE id = $txtid;
insert into historial values($txtid, $txtusuario,$txtgrupo, $txtoficina,$txtpuesto, $txtactivo, $txtmaquina, $txtserial, $txtso, $txtserialso, $txtip, $txtnompc,
$txtram, $txtoffi,$txtproc, $txtobservaciones,$txtrespon,DATE_FORMAT(NOW(), '%Y-%m-%d'));
END$
DELIMITER ;
El me modifica en la tabla de datos y me lo guarda en la tabla historial hasta ahí todo bien, ¿pero cuándo vuelvo a modificar el mismo dato el me lo modicifica en la tabla de datos pero no me lo inserta en la otra tabla que estaré haciendo mal? Necesito de sus conocimientos david. Muchas gracias por la atención prestada. Espero haberme echo entender.

1 Respuesta

Respuesta
1
Si se trata del mismo dato, puede ser que como ya se insertó, la tabla no admita el mismo dato de nuevo y el insert falle. Es decir, que quizás tienes un índice que no admite duplicados en historial y estás intentando almacenar una clave duplicada.
Intenta ejecutar las sentencias fuera del procedimiento y verás el error que se produce.
Si señor tenia toda la razón le quite la columna del id que estaba como autoincremento y perfecto, muchas gracias david por su atención prestada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas