Ayuda con Trigger

06/09/2005 - 15:47 por AlfonsoPeru | Informe spam
Saludos.
Lo que deseo es q actualizado un campo especifico de una TABLA1,
automaticamente me inserte un reg. en una TABLA2. Esto no es problema si es
que no fuera q parte de lo q se debe insertar son algunos campos que
corresponden de ese registro a actualizar. Llego a insertar pero la data q
coge es del campo correspondiente pero de otro registro, como si cogiera info
de ese campo pero de otra fila. Aca les envio mi trigger. A ver si alguien me
pudiera ayudar a insertar datos de los campos pero de la fila la cual estoy
haciendo cambios, es decir de su correspondiente.

Gracias.

CODIGO
-
CREATE TRIGGER [triUpdate] ON [dbo].[Demo2]
FOR UPDATE
AS

Begin
DECLARE @num char(10)
DECLARE @valor char(10)
DECLARE @fecha1 datetime
if update(doc_codlote)
begin
select @num=nro, @valor = doc_codusuario, @fecha1 = fecha
from demo2
Insert Into tabla (dato1, dato2, dato3, fecha1, fecha2, dias)
values(@num , @num * 5 , @valor, getdate(), @fecha1, DATEDIFF(day, @fecha1,
getdate()) )
end
End
 

Leer las respuestas

#1 Alejandro Mesa
06/09/2005 - 16:01 | Informe spam
Alfonso,

Cuando sql server realiza un "update" de una tabla, se crean dos tablas
virtuales que pueden ser accedidas desde un trigger. Estas tablas son
"deleted" e "inserted". La tabla "deleted" tendra las filas modificadas pero
con los valores antes de la modificacion, en cambio, la tabla "inserted"
tendra la nueva data de las filas modificadas. Una cosa que debes tener en
cuenta es que los triggers se ejecutan por cada sentencia que manipula la
tabla y no por cada registro afectado, por lo que debes tener en cuenta la
posibilidad de que se hayan afectado mas de una fila.

CREATE TRIGGER [triUpdate] ON [dbo].[Demo2]
FOR UPDATE
AS

set nocount on

if update(doc_codlote)
Insert Into tabla (dato1, dato2, dato3, fecha1, fecha2, dias)
select
nro,
nro * 5,
doc_codusuario,
getdate(),
fecha,
DATEDIFF(day, fecha, getdate()) )
from
inserted
go


AMB

"AlfonsoPeru" wrote:

Saludos.
Lo que deseo es q actualizado un campo especifico de una TABLA1,
automaticamente me inserte un reg. en una TABLA2. Esto no es problema si es
que no fuera q parte de lo q se debe insertar son algunos campos que
corresponden de ese registro a actualizar. Llego a insertar pero la data q
coge es del campo correspondiente pero de otro registro, como si cogiera info
de ese campo pero de otra fila. Aca les envio mi trigger. A ver si alguien me
pudiera ayudar a insertar datos de los campos pero de la fila la cual estoy
haciendo cambios, es decir de su correspondiente.

Gracias.

CODIGO
-
CREATE TRIGGER [triUpdate] ON [dbo].[Demo2]
FOR UPDATE
AS

Begin
DECLARE @num char(10)
DECLARE @valor char(10)
DECLARE @fecha1 datetime
if update(doc_codlote)
begin
select @num=nro, @valor = doc_codusuario, @fecha1 = fecha
from demo2
Insert Into tabla (dato1, dato2, dato3, fecha1, fecha2, dias)
values(@num , @num * 5 , @valor, getdate(), @fecha1, DATEDIFF(day, @fecha1,
getdate()) )
end
End


Preguntas similares