Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HKONRAD

Problemas com uma trigger de auditoria

Recommended Posts

Galera.... seguinte!!

 

To quebrando a cabeça com uma trigger de auditoria, espero que alguém consiga me dar uma luz.... segue:

 

Tenho duas tabelas (AUDITORIA e CARGO_SALARIO), para cada alteração realizada é disparada uma trigger com insert na tabela AUDITORIA. Nesta trigger armazeno o nome da coluna do dado alterado em uma variável, só que no insert preciso inserir o valor antigo e o novo, mas qdo vou consultar as tabelas INSERTED e DELETED, passo a variável da coluna no select para localizar o dado da coluna mas em vez de ele insertar o dado ele inserta o nome da coluna.

 

Colocando apenas a variável na select é lógico que não dá certo, porém já testei com CAST (nada feito) e com o CONVERT (tbm nada!!) e mantém a inserção do nome da coluna em vez do dado....

 

Alguém tem alguma dica???

 

Vlw!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não me parece problema de SQL e sim da linguagem da trigger, seria bom tavez que você publicasse a trigger e o bd em que ela roda, se for o caso eu movo o post para o fórum do bd em questão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ela roda em MS SQL Server 2005 Standard

 

CODE
CREATE TRIGGER [T_TESTE2] ON [dbo].[CADASTRO_CARGO_SALARIO] AFTER UPDATE

AS

DECLARE @COLUMNID INT,

@COLUMNS NVARCHAR(4000),

@OBJECTID INT,

@LASTCOLUMNID INT

SET @OBJECTID = (SELECT ID FROM SYSOBJECTS WHERE NAME = 'CADASTRO_CARGO_SALARIO')

SET @LASTCOLUMNID = (SELECT MAX(COLID) FROM SYSCOLUMNS WHERE ID = @OBJECTID)

SET @COLUMNID = 1

WHILE @COLUMNID <= @LASTCOLUMNID

BEGIN

IF (SUBSTRING(COLUMNS_UPDATED(),(@COLUMNID - 1) / 8 + 1, 1)) &

POWER(2, (@COLUMNID - 1) % 8) = POWER(2, (@COLUMNID - 1) % 8)

SET @COLUMNS = COL_NAME(@OBJECTID,@COLUMNID)

SET @COLUMNID = @COLUMNID + 1

END

 

INSERT CADASTRO_AUDITORIA

SELECT 'CADASTRO_CARGO_SALARIO',

@COLUMNS,

'ALTERAÇÃO',

SYSTEM_USER,

(SELECT @COLUMNS FROM DELETED),

-- (SELECT CAST(@COLUMNS AS VARCHAR) FROM DELETED),

-- (SELECT CONVERT (VARCHAR(100), @COLUMNS) FROM DELETED),

(SELECT @COLUMNS FROM INSERTED),

GETDATE()

FROM INSERTED

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.