Trigger

19/01/2004 - 23:43 por Juan F Botero | Informe spam
Saludos

Tengo la siguiente situacion.
En una tabla guardo las notas de los alumnos de un grupo. las notas se
pueden modificar las veces que sean necesario. en la tabla de notas, queda
registrado quien modifico y la fecha. pero tengo un problema y es que si
modifico 10 veces las notas. solo me queda registrado la ultima nota y el
ultimo que la modifico.
lo que necesito hacer, es llevar una auditoria de las 10 notas que tuvo el
alumno y quien modifico cada una de las notas.

la idea era hacer un trigger en la tabla de notas que al modificar la nota,
me creara en otra tabla el registro con los datos que necesito guardar, pero
la pregunta es como paso los datos antes de modificarlos.?
se puede hacer esto con un trigger? o un sp?

recibo sugerencias.
gracias
 

Leer las respuestas

#1 ulises
20/01/2004 - 01:10 | Informe spam
En los triggers debes manejar los tablas inserted y deleted, en las
tablas inserted tienes los datos insertados o actualizados mientras
que en la tabla deleted tienes los datos borrados o antes de la
actualización. Revisa la información sobre esas tablas en el BOL.

Por ejemplo si deseas guardar en una tabla "Cambio", los valores
antiguos y nuevos de una columna "estado" de una tabla "orden podrías
hacer un trigger de la siguiente forma (no probado):

CREATE TRIGGER trguardarcambio
on ORDEN
AFTER UPDATE
AS
IF UPDATE(estado)
BEGIN
INSERT INTO Cambio ( fecha, usuario, descripcion )
SELECT GETDATE(),
USER_NAME(),
' Cambio de ' + CAST(d.estado as varchar) + ' a ' +
CAST(i.estado as varchar)
FROM deleted d inner join inserted i
ON d.codigoorden = i.codigoorden ' la clave de la tabla
END

Saludos,
Ulises

On Mon, 19 Jan 2004 16:43:49 -0600, "Juan F Botero"
wrote:

Saludos

Tengo la siguiente situacion.
En una tabla guardo las notas de los alumnos de un grupo. las notas se
pueden modificar las veces que sean necesario. en la tabla de notas, queda
registrado quien modifico y la fecha. pero tengo un problema y es que si
modifico 10 veces las notas. solo me queda registrado la ultima nota y el
ultimo que la modifico.
lo que necesito hacer, es llevar una auditoria de las 10 notas que tuvo el
alumno y quien modifico cada una de las notas.

la idea era hacer un trigger en la tabla de notas que al modificar la nota,
me creara en otra tabla el registro con los datos que necesito guardar, pero
la pregunta es como paso los datos antes de modificarlos.?
se puede hacer esto con un trigger? o un sp?

recibo sugerencias.
gracias

Preguntas similares