Posted 25 November 2011 - 08:23 PM
hola a todos y muchas gracias, la verdad es que lo que pretendia era en una tabla de auditoria poder guardar el usuario, fecha, registro , campo, tabla, valor nuevoy el valor que estaba antes de actualizar los datos por ahora lo que hice fue hacer un trigger en cada tabla y validar campo por campo debido a la prioridad de la entrega, no se si fue lo mas optimo pero esto fue lo que hice
SET TERM ^ ;
create trigger trg_CLIENTES_AU for CLIENTES AFTER UPDATE
AS
begin
IF (new.cli_salario <> old.cli_salario) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_SALARIO', CAST(OLD.cli_salario AS VARCHAR(500)),CAST( NEW.cli_salario AS VARCHAR(500)) );
END
IF (new.CAR_CODIGO <> old.CAR_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CAR_CODIGO', CAST(OLD.CAR_CODIGO AS VARCHAR(500)),CAST( NEW.CAR_CODIGO AS VARCHAR(500)) );
END
IF (new.COS_CODIGO <> old.COS_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','COS_CODIGO', CAST(OLD.COS_CODIGO AS VARCHAR(500)),CAST( NEW.COS_CODIGO AS VARCHAR(500)) );
END
IF (new.PRO_CODIGO <> old.PRO_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','PRO_CODIGO', CAST(OLD.PRO_CODIGO AS VARCHAR(500)),CAST( NEW.PRO_CODIGO AS VARCHAR(500)) );
END
IF (new.CTR_CODIGO <> old.CTR_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CTR_CODIGO', CAST(OLD.CTR_CODIGO AS VARCHAR(500)),CAST( NEW.CTR_CODIGO AS VARCHAR(500)) );
END
IF (new.SUC_CODIGO <> old.SUC_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','SUC_CODIGO', CAST(OLD.SUC_CODIGO AS VARCHAR(500)),CAST( NEW.SUC_CODIGO AS VARCHAR(500)) );
END
IF (new.EMP_CODIGO <> old.EMP_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','EMP_CODIGO', CAST(OLD.EMP_CODIGO AS VARCHAR(500)),CAST( NEW.EMP_CODIGO AS VARCHAR(500)) );
END
IF (new.CLI_CODNOM <> old.CLI_CODNOM) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_CODNOM', CAST(OLD.CLI_CODNOM AS VARCHAR(500)),CAST( NEW.CLI_CODNOM AS VARCHAR(500)) );
END
IF (new.CLI_FCHAFILIACION <> old.CLI_FCHAFILIACION) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_FCHAFILIACION', CAST(OLD.CLI_FCHAFILIACION AS VARCHAR(500)),CAST( NEW.CLI_FCHAFILIACION AS VARCHAR(500)) );
END
IF (new.CLI_ESTADO <> old.CLI_ESTADO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_ESTADO', CAST(OLD.CLI_ESTADO AS VARCHAR(500)),CAST( NEW.CLI_ESTADO AS VARCHAR(500)) );
END
IF (new.CLI_FCHRETIRO <> old.CLI_FCHRETIRO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_FCHRETIRO', CAST(OLD.CLI_FCHRETIRO AS VARCHAR(500)),CAST( NEW.CLI_FCHRETIRO AS VARCHAR(500)) );
END
IF (new.CLI_FCHINGRESOCIA <> old.CLI_FCHINGRESOCIA) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_FCHINGRESOCIA', CAST(OLD.CLI_FCHINGRESOCIA AS VARCHAR(500)),CAST( NEW.CLI_FCHINGRESOCIA AS VARCHAR(500)) );
END
IF (new.CLI_SOCIO_S_N <> old.CLI_SOCIO_S_N) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_SOCIO_S_N', CAST(OLD.CLI_SOCIO_S_N AS VARCHAR(500)),CAST( NEW.CLI_SOCIO_S_N AS VARCHAR(500)) );
END
IF (new.CLI_MENSAJE <> old.CLI_MENSAJE) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_MENSAJE', CAST(OLD.CLI_MENSAJE AS VARCHAR(500)),CAST( NEW.CLI_MENSAJE AS VARCHAR(500)) );
END
IF (new.DIV_CODIGO <> old.DIV_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','DIV_CODIGO', CAST(OLD.DIV_CODIGO AS VARCHAR(500)),CAST( NEW.DIV_CODIGO AS VARCHAR(500)) );
END
IF (new.CLI_FCHINIVAC <> old.CLI_FCHINIVAC) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_FCHINIVAC', CAST(OLD.CLI_FCHINIVAC AS VARCHAR(500)),CAST( NEW.CLI_FCHINIVAC AS VARCHAR(500)) );
END
IF (new.NIVESCO_CODIGO <> old.NIVESCO_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','NIVESCO_CODIGO', CAST(OLD.NIVESCO_CODIGO AS VARCHAR(500)),CAST( NEW.NIVESCO_CODIGO AS VARCHAR(500)) );
END
IF (new.CLI_ESTRATO <> old.CLI_ESTRATO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_ESTRATO', CAST(OLD.CLI_ESTRATO AS VARCHAR(500)),CAST( NEW.CLI_ESTRATO AS VARCHAR(500)) );
END
IF (new.CLI_CABFAM <> old.CLI_CABFAM) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_CABFAM', CAST(OLD.CLI_CABFAM AS VARCHAR(500)),CAST( NEW.CLI_CABFAM AS VARCHAR(500)) );
END
IF (new.CLI_MUJCABFAM <> old.CLI_MUJCABFAM) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_MUJCABFAM', CAST(OLD.CLI_MUJCABFAM AS VARCHAR(500)),CAST( NEW.CLI_MUJCABFAM AS VARCHAR(500)) );
END
IF (new.CLI_JORNLAB <> old.CLI_JORNLAB) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_JORNLAB', CAST(OLD.CLI_JORNLAB AS VARCHAR(500)),CAST( NEW.CLI_JORNLAB AS VARCHAR(500)) );
END
IF (new.OCU_CODIGO <> old.OCU_CODIGO) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','OCU_CODIGO', CAST(OLD.OCU_CODIGO AS VARCHAR(500)),CAST( NEW.OCU_CODIGO AS VARCHAR(500)) );
END
IF (new.CLI_CENTRI <> old.CLI_CENTRI) THEN
BEGIN
INSERT INTO AUDITORIA (AUDIT_CCN, AUDIT_FECHA, AUDIT_USUARIO, TER_CCN, AUDIT_TABLA, AUDIT_CAMPO, AUDIT_VALORVIEJO,AUDIT_VALORNUEVO)
VALUES (GEN_ID(AUDITORIA_GEN,1), NEW.CLI_FCHACTUALIZACION, NEW.CLI_USUACTUAL, OLD.TER_CCN ,'CLIENTES','CLI_CENTRI', CAST(OLD.CLI_CENTRI AS VARCHAR(500)),CAST( NEW.CLI_CENTRI AS VARCHAR(500)) );
END
end
^