Triggers

19/02/2004 - 19:46 por Guillermo | Informe spam
Necesito controlar las modificaciones que los usuarios hacen en las tablas
de una base de datos.
Quiero saber,por ejemplo, cuando y quien modifica el valor de un campo, cual
era el anterior y cual el nuevo valor.
Asi con cada accion que se realice.

Según tengo entendido, no hay una opción en SQL que me guarde tanto nivel de
cambios, y alguna vez creo haber leido en este mismo grupo, que una manera
de solucionarlo, podría ser crear una base de datos especialmente para esto.
Luego con Triggers, grabar registros en esta nueva base de datos con todo el
detalle que se necesite.

Estoy en lo correcto???
De ser asi, alguien puede orientarme en como crear estos trigers.

Preguntas similare

Leer las respuestas

#1 ulises
19/02/2004 - 20:04 | Informe spam
Sí estás en lo correcto, ¿como implementarlo? ... en un
trigger de inserción podrías tener lo siguiente :

CREATE TRIGGER trInsertaRegistro ON tabla FOR INSERT
AS
INSERT INTO tablaaud SELECT * FROM inserted

en el caso de eliminación sería algo parecido pero con la
tabla deleted y en el caso de update tendrías que realizar
un JOIN entre la tabla inserted y deleted para obtener el
valor anterior y el valor nuevo.

Saludos,
Ulises

Necesito controlar las modificaciones que los usuarios


hacen en las tablas
de una base de datos.
Quiero saber,por ejemplo, cuando y quien modifica el


valor de un campo, cual
era el anterior y cual el nuevo valor.
Asi con cada accion que se realice.

Según tengo entendido, no hay una opción en SQL que me


guarde tanto nivel de
cambios, y alguna vez creo haber leido en este mismo


grupo, que una manera
de solucionarlo, podría ser crear una base de datos


especialmente para esto.
Luego con Triggers, grabar registros en esta nueva base


de datos con todo el
detalle que se necesite.

Estoy en lo correcto???
De ser asi, alguien puede orientarme en como crear estos


trigers.


.

Respuesta Responder a este mensaje
#2 Maximiliano D. A.
19/02/2004 - 21:56 | Informe spam
hola, si estas en lo correcto,

Puedes revisar en tus libros como se crea un trigger, tambien ir a la pagina
de Miguel (www.portalsql.com) donde hay ejemplos muy claros.

Aca va uno (sin probar ni mucho menos)

Create trigger auditoria ON tutabla for Update
as

insert into tutablaauditoria (camposdelamisma)
Select campos from Deleted

Esto es un ejemplo, si ademas pones Suser_sname() sabes quien lo hizo, y
Getdate() cuando lo hizo, tambien podes saber de que maquina lo hizo,etc,etc



Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Guillermo" escribió en el mensaje
news:
Necesito controlar las modificaciones que los usuarios hacen en las tablas
de una base de datos.
Quiero saber,por ejemplo, cuando y quien modifica el valor de un campo,


cual
era el anterior y cual el nuevo valor.
Asi con cada accion que se realice.

Según tengo entendido, no hay una opción en SQL que me guarde tanto nivel


de
cambios, y alguna vez creo haber leido en este mismo grupo, que una manera
de solucionarlo, podría ser crear una base de datos especialmente para


esto.
Luego con Triggers, grabar registros en esta nueva base de datos con todo


el
detalle que se necesite.

Estoy en lo correcto???
De ser asi, alguien puede orientarme en como crear estos trigers.







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.581 / Virus Database: 368 - Release Date: 09/02/2004
Respuesta Responder a este mensaje
#3 Guillermo
20/02/2004 - 16:02 | Informe spam
Por lo que me dicen, podría utilizar triggers para grabar en un campo de
una tabla el valor que hay antes de un update y en otro campo el nuevo valor
que se está grabando.
También podría tener cuando se hace un insert, el valor de un campo en
particular, que se está insertando.

Si esto es asi, como hago para tomar estos valores.

Estoy viendo en los BOL como crear el Trigger y hasta aca todo bien, pero no
se como tomar saber cuales son los valores que se estan actualizando en la
base


create trigger trg_eads on empleadoadscripcion for insert,update
As
Insert into Log
(fecha, valor_anterior, valor_nuevo, usuario)
Values
(GetDate(), ???, ???, ???)


Tampoco se como saber que usuario es el que esta haciendo la accion en la
base.
Incluso, el ejemplo anterior que puse, serviría para cuando la accion es un
update, donde tendría un valor actual y un nuevo valor para un determinado
campo.
Ahora cuando es un insert, ¿no voy a tener problemas con el Valor Actual?




"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:%
hola, si estas en lo correcto,

Puedes revisar en tus libros como se crea un trigger, tambien ir a la


pagina
de Miguel (www.portalsql.com) donde hay ejemplos muy claros.

Aca va uno (sin probar ni mucho menos)

Create trigger auditoria ON tutabla for Update
as

insert into tutablaauditoria (camposdelamisma)
Select campos from Deleted

Esto es un ejemplo, si ademas pones Suser_sname() sabes quien lo hizo, y
Getdate() cuando lo hizo, tambien podes saber de que maquina lo


hizo,etc,etc



Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Guillermo" escribió en el mensaje
news:
> Necesito controlar las modificaciones que los usuarios hacen en las


tablas
> de una base de datos.
> Quiero saber,por ejemplo, cuando y quien modifica el valor de un campo,
cual
> era el anterior y cual el nuevo valor.
> Asi con cada accion que se realice.
>
> Según tengo entendido, no hay una opción en SQL que me guarde tanto


nivel
de
> cambios, y alguna vez creo haber leido en este mismo grupo, que una


manera
> de solucionarlo, podría ser crear una base de datos especialmente para
esto.
> Luego con Triggers, grabar registros en esta nueva base de datos con


todo
el
> detalle que se necesite.
>
> Estoy en lo correcto???
> De ser asi, alguien puede orientarme en como crear estos trigers.
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.581 / Virus Database: 368 - Release Date: 09/02/2004


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