SQL Server - Ayuda Trigger

 
Vista:

Ayuda Trigger

Publicado por arcaso (4 intervenciones) el 29/03/2010 22:57:12
hola a todos tengo una duda estoy usando sql server 2005
y el problema es que no se como hacer que al momento que se actulalise un campo por medio de un trigger obtener el dato anterior y el dato nuevo que se actualizaron estoy probando con las tablas
Usuario que tiene los campos Nombre, Paterno, Materno
cambios que tiene los campos tipo_modificacion, nombre_anterior,nombre_actual, paterno_anterior,paterno_actual, materno_anterior, materno_actual
ojala y me puedan decir como obtener el dato anterior al update
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Ayuda Trigger

Publicado por Isaias (4558 intervenciones) el 30/03/2010 19:17:52
los datos nuevos estan en INSERTED, los datos anteriores estan en UPDATED, eso ya te lo habia comentado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Trigger

Publicado por arcaso  (4 intervenciones) el 30/03/2010 20:09:25
Gracias Isaias por responder.
pero a mi ni me avias respondido antes pero bueno mira ya intente con updated y al momento de crear el trigger no me manda errores pero cuando actualizo algun campo me manda este error

Mens 208, Nivel 16, Estado 1, Procedimiento t_prueba, Línea 11
El nombre de objeto 'UPDATED' no es válido.

y este el el trigger

create Trigger t_prueba
On dbo.usuario
for update
As
declare @actual varchar(200)
declare @ID varchar(10)
declare @IDN varchar(10)
declare @nomant varchar(30)
select @ID = (select id from INSERTED)
select @actual =(select nombre from INSERTED)
select @nomant =(select nombre from UPDATED)
print @actual
print @nomant
set @IDN=@ID
set @ID=@ID + 1
PRINT @ID
insert into cambios(id,fecha,estacion,nombre_ant,nombre,paterno,materno,tipo)
select id,getdate(),host_name(),@nomant,nombre,paterno,@actual,'Update'FROM INSERTED
update usuario set id=@ID WHERE id=@IDN

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Ayuda Trigger

Publicado por Isaias (4558 intervenciones) el 30/03/2010 22:31:30
Sorry, intentalo con DELETED

Ademas, deberias hacer algo como:

select @ID = id from INSERTED -- esto es correcto

select @ID = (select id from INSERTED) -- incorrecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Ayuda Trigger

Publicado por roger (173 intervenciones) el 30/03/2010 22:31:40
no habia oido updated, prueba con deleted para obtener los valores anteriores al cambio

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Trigger

Publicado por arcaso (4 intervenciones) el 30/03/2010 23:10:54
Muchas Gracias Isaias
ya quedo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar