Amigos,
Soy nuevo en esto de los Triggers y le spido por favor me apoyen a
resolver este dilema en el que me encuentro.
Estoy trabajando con SQL2000 y he creado una tabla de Auditoria para
todas las tablas de mi modulo.
El problema esta que cuando a una tabla especifica le hago un Update
masivo digamos Where codigo=1 y me de como reultado mas de 1 fila el
triger de auditoria solo me inserta un registro y el resto los obvia.
He tratado de leer sobre Triggers con cursores pero aún no he
encontrado un ejemplo a seguir.
Aquí les envio el codigo del Trigger a ver si me pueden ayudar:
CREATE TRIGGER AuditoriaCoactivoUpdate_CoactivoValorDetalleCtaCte
ON CoactivoValorDetalleCtaCte
FOR UPDATE
AS
DECLARE @TxDesAud Varchar(8000), @Cadena Varchar(1000), @CoIdtTabAud
Int, @CoUsu Smallint
SET @TxDesAud = ''
SET @Cadena = ''
SELECT @CoIdtTabAud = CoIdtCVDC, @CoUsu = CoUsu FROM Deleted
IF UPDATE (CoIdtCoaExp)
BEGIN
SELECT @Cadena = CONVERT(Varchar,CoIdtCoaExp) FROM Deleted
SET @Cadena = ISNULL(@Cadena,'NULL')
SET @TxDesAud = @TxDesAud +
COL_NAME(OBJECT_ID('CoactivoValorDetalleCtaCte'), 2) + '(' + @Cadena +
')'
END
IF UPDATE (TxEstCVDC)
BEGIN
SELECT @Cadena = ISNULL(TxEstCVDC,'NULL') FROM Deleted -- Cadena
IF LEN(@TxDesAud)>0
BEGIN
SET @TxDesAud = @TxDesAud + '; '
END
SET @TxDesAud = @TxDesAud +
COL_NAME(OBJECT_ID('CoactivoValorDetalleCtaCte'), 24) + '(' + @Cadena
+ ')'
END
IF LEN(@TxDesAud) > 0
BEGIN
INSERT INTO AuditoriaCoactivo
(TxEveAud, TxTabAud, CoIdtTabAud, TxDesAud, CoUsu)
VALUES
('Update', 'CoactivoValorDetalleCtaCte', @CoIdtTabAud, @TxDesAud,
@CoUsu)
END
GO
Muchisimas gracias de antemano por el apoyo prestado a mi
interrogante.
Aldo TM
Lima - Peru
Leer las respuestas