de Triggers

21/09/2006 - 18:19 por Camilo Acosta | Informe spam
Hola grupo,

Tengo un Update masivo en una tabla, sobre la columna que es la clave
primaria. Como puedo usar las tablas inserted y deleted para saber cuales
eran los valores que anteriores y los nuevos.

create Tabla Prueba(codigo varchar(6))

insert into Prueba(codigo) values('0')
insert into Prueba(codigo) values('1')
insert into Prueba(codigo) values('2')
insert into Prueba(codigo) values('3')
insert into Prueba(codigo) values('55')

update Prueba set codigo = '0' + codigo Where len(codigo)=1

Quiero grabar como auditoria
Valor Anterior, Nuevo Valor
'0' '00'
'1' '01'
'2' '02'
'3' '03'

Gracias,

Camilo Acosta

Preguntas similare

Leer las respuestas

#1 Isaias
21/09/2006 - 19:19 | Informe spam
DELETED e INSERTED son tablas lógicas (conceptuales). Son de estructura
similar a la tabla en que se define el desencadenador, es decir, la tabla en
que se intenta la acción del usuario, y guarda los valores antiguos o nuevos
de las filas que la acción del usuario puede cambiar. Por ejemplo, para
recuperar todos los valores de la tabla deleted, utilice:
SELECT *
FROM deleted


Saludos
IIslas


"Camilo Acosta" wrote:

Hola grupo,

Tengo un Update masivo en una tabla, sobre la columna que es la clave
primaria. Como puedo usar las tablas inserted y deleted para saber cuales
eran los valores que anteriores y los nuevos.

create Tabla Prueba(codigo varchar(6))

insert into Prueba(codigo) values('0')
insert into Prueba(codigo) values('1')
insert into Prueba(codigo) values('2')
insert into Prueba(codigo) values('3')
insert into Prueba(codigo) values('55')

update Prueba set codigo = '0' + codigo Where len(codigo)=1

Quiero grabar como auditoria
Valor Anterior, Nuevo Valor
'0' '00'
'1' '01'
'2' '02'
'3' '03'

Gracias,

Camilo Acosta



Respuesta Responder a este mensaje
#2 Alejandro Mesa
21/09/2006 - 19:21 | Informe spam
Camilo,

Si actualizas la clave primaria y no tienes otra columna unica que no haya
cambiado, entonces no podras diferenciar la viejo de lo nuevo. Para este tipo
de casos (donde la clave primaria puede cambiar) se aconseja usar claves
subrrogadas (columna con propiedad identity).


AMB


"Camilo Acosta" wrote:

Hola grupo,

Tengo un Update masivo en una tabla, sobre la columna que es la clave
primaria. Como puedo usar las tablas inserted y deleted para saber cuales
eran los valores que anteriores y los nuevos.

create Tabla Prueba(codigo varchar(6))

insert into Prueba(codigo) values('0')
insert into Prueba(codigo) values('1')
insert into Prueba(codigo) values('2')
insert into Prueba(codigo) values('3')
insert into Prueba(codigo) values('55')

update Prueba set codigo = '0' + codigo Where len(codigo)=1

Quiero grabar como auditoria
Valor Anterior, Nuevo Valor
'0' '00'
'1' '01'
'2' '02'
'3' '03'

Gracias,

Camilo Acosta



Respuesta Responder a este mensaje
#3 Camilo Acosta
21/09/2006 - 19:38 | Informe spam
Gracias Alejandro, era lo que me temia.


"Alejandro Mesa" escribió en el
mensaje news:
Camilo,

Si actualizas la clave primaria y no tienes otra columna unica que no haya
cambiado, entonces no podras diferenciar la viejo de lo nuevo. Para este
tipo
de casos (donde la clave primaria puede cambiar) se aconseja usar claves
subrrogadas (columna con propiedad identity).


AMB


"Camilo Acosta" wrote:

Hola grupo,

Tengo un Update masivo en una tabla, sobre la columna que es la clave
primaria. Como puedo usar las tablas inserted y deleted para saber cuales
eran los valores que anteriores y los nuevos.

create Tabla Prueba(codigo varchar(6))

insert into Prueba(codigo) values('0')
insert into Prueba(codigo) values('1')
insert into Prueba(codigo) values('2')
insert into Prueba(codigo) values('3')
insert into Prueba(codigo) values('55')

update Prueba set codigo = '0' + codigo Where len(codigo)=1

Quiero grabar como auditoria
Valor Anterior, Nuevo Valor
'0' '00'
'1' '01'
'2' '02'
'3' '03'

Gracias,

Camilo Acosta



Respuesta Responder a este mensaje
#4 Camilo Acosta
21/09/2006 - 19:39 | Informe spam
Isaias, gracias por tu respuesta. Lo que me indicas ya lo conozco. La
respuesta de Alejandro me aclara mi inquietud.


"Isaias" escribió en el mensaje
news:
DELETED e INSERTED son tablas lógicas (conceptuales). Son de estructura
similar a la tabla en que se define el desencadenador, es decir, la tabla
en
que se intenta la acción del usuario, y guarda los valores antiguos o
nuevos
de las filas que la acción del usuario puede cambiar. Por ejemplo, para
recuperar todos los valores de la tabla deleted, utilice:
SELECT *
FROM deleted


Saludos
IIslas


"Camilo Acosta" wrote:

Hola grupo,

Tengo un Update masivo en una tabla, sobre la columna que es la clave
primaria. Como puedo usar las tablas inserted y deleted para saber cuales
eran los valores que anteriores y los nuevos.

create Tabla Prueba(codigo varchar(6))

insert into Prueba(codigo) values('0')
insert into Prueba(codigo) values('1')
insert into Prueba(codigo) values('2')
insert into Prueba(codigo) values('3')
insert into Prueba(codigo) values('55')

update Prueba set codigo = '0' + codigo Where len(codigo)=1

Quiero grabar como auditoria
Valor Anterior, Nuevo Valor
'0' '00'
'1' '01'
'2' '02'
'3' '03'

Gracias,

Camilo Acosta



Respuesta Responder a este mensaje
#5 Isaias
21/09/2006 - 20:47 | Informe spam
Ok Camilo

Solo que me fui con la finta de la palabra "auditoria" y precisamente con
esas 2 tablas, puedes obtener el ANTES y DESPUES del contenido de un registro.


Saludos
IIslas


"Camilo Acosta" wrote:

Isaias, gracias por tu respuesta. Lo que me indicas ya lo conozco. La
respuesta de Alejandro me aclara mi inquietud.


"Isaias" escribió en el mensaje
news:
> DELETED e INSERTED son tablas lógicas (conceptuales). Son de estructura
> similar a la tabla en que se define el desencadenador, es decir, la tabla
> en
> que se intenta la acción del usuario, y guarda los valores antiguos o
> nuevos
> de las filas que la acción del usuario puede cambiar. Por ejemplo, para
> recuperar todos los valores de la tabla deleted, utilice:
> SELECT *
> FROM deleted
>
>
> Saludos
> IIslas
>
>
> "Camilo Acosta" wrote:
>
>> Hola grupo,
>>
>> Tengo un Update masivo en una tabla, sobre la columna que es la clave
>> primaria. Como puedo usar las tablas inserted y deleted para saber cuales
>> eran los valores que anteriores y los nuevos.
>>
>> create Tabla Prueba(codigo varchar(6))
>>
>> insert into Prueba(codigo) values('0')
>> insert into Prueba(codigo) values('1')
>> insert into Prueba(codigo) values('2')
>> insert into Prueba(codigo) values('3')
>> insert into Prueba(codigo) values('55')
>>
>> update Prueba set codigo = '0' + codigo Where len(codigo)=1
>>
>> Quiero grabar como auditoria
>> Valor Anterior, Nuevo Valor
>> '0' '00'
>> '1' '01'
>> '2' '02'
>> '3' '03'
>>
>> Gracias,
>>
>> Camilo Acosta
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida