Ayuda con este Trigger!...

21/02/2005 - 20:38 por Gabriel South | Informe spam
Hola!

Tengo este trigger que se ejecuta al hacer un UPDATE en un campo especifico,
y queria saber como tomar los valores del registro que fue modificado para
buscar esos datos en otra tabla y modificar otro valores...

Intento obtener los valores del registro que fue modificado con

Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
@DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
@DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
@AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
FROM EZ9010

Pero no toma los del modificado, si no de todos!...

Como hago?????????

Gracias

Gabriel.




Aqui esta mi trigger:

ALTER TRIGGER CheckEZ9
ON dbo.EZ9010
FOR UPDATE
AS

IF UPDATE(EZ9_DT_AUT)
BEGIN
Declare @PO_NUM VARCHAR(15),
@NR_CON VARCHAR(6),
@DT_AUT VARCHAR(8),
@OS VARCHAR(13),
@DOCTO VARCHAR(10),
@BANCO VARCHAR(3),
@AGENCIA VARCHAR(5),
@CONTA VARCHAR(10)

Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
@DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
@DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
@AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
FROM EZ9010

UPDATE EZ4010
SET EZ4_DTAPRO=@DT_AUT
WHERE EZ4_PO_NUM=@PO_NUM AND
EZ4_NR_CON=@NR_CON

END

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
21/02/2005 - 21:15 | Informe spam
Gabriel,

Pudieras postear la estructura de ambas tablas y como estas se relacionan?.
Necesitamos saber cual es la logica para actualizar la segunda tabla.


AMB


"Gabriel South" wrote:

Hola!

Tengo este trigger que se ejecuta al hacer un UPDATE en un campo especifico,
y queria saber como tomar los valores del registro que fue modificado para
buscar esos datos en otra tabla y modificar otro valores...

Intento obtener los valores del registro que fue modificado con

Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
@DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
@DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
@AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
FROM EZ9010

Pero no toma los del modificado, si no de todos!...

Como hago?????????

Gracias

Gabriel.




Aqui esta mi trigger:

ALTER TRIGGER CheckEZ9
ON dbo.EZ9010
FOR UPDATE
AS

IF UPDATE(EZ9_DT_AUT)
BEGIN
Declare @PO_NUM VARCHAR(15),
@NR_CON VARCHAR(6),
@DT_AUT VARCHAR(8),
@OS VARCHAR(13),
@DOCTO VARCHAR(10),
@BANCO VARCHAR(3),
@AGENCIA VARCHAR(5),
@CONTA VARCHAR(10)

Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
@DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
@DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
@AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
FROM EZ9010

UPDATE EZ4010
SET EZ4_DTAPRO=@DT_AUT
WHERE EZ4_PO_NUM=@PO_NUM AND
EZ4_NR_CON=@NR_CON

END





Respuesta Responder a este mensaje
#2 Gabriel South
21/02/2005 - 21:48 | Informe spam
hOLA!

Gracias por tu ayuda, ya descubri como se hace!

Hay que usar la tabla "virtual" INSERTED

tipo

Select @var = (select columna from inserted)

Listo, eso toma el valor del registro actual..

Gabriel




"Alejandro Mesa" escreveu na
mensagem news:
Gabriel,

Pudieras postear la estructura de ambas tablas y como estas se
relacionan?.
Necesitamos saber cual es la logica para actualizar la segunda tabla.


AMB


"Gabriel South" wrote:

Hola!

Tengo este trigger que se ejecuta al hacer un UPDATE en un campo
especifico,
y queria saber como tomar los valores del registro que fue modificado
para
buscar esos datos en otra tabla y modificar otro valores...

Intento obtener los valores del registro que fue modificado con

Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
@DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
@DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
@AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
FROM EZ9010

Pero no toma los del modificado, si no de todos!...

Como hago?????????

Gracias

Gabriel.




Aqui esta mi trigger:

ALTER TRIGGER CheckEZ9
ON dbo.EZ9010
FOR UPDATE
AS

IF UPDATE(EZ9_DT_AUT)
BEGIN
Declare @PO_NUM VARCHAR(15),
@NR_CON VARCHAR(6),
@DT_AUT VARCHAR(8),
@OS VARCHAR(13),
@DOCTO VARCHAR(10),
@BANCO VARCHAR(3),
@AGENCIA VARCHAR(5),
@CONTA VARCHAR(10)

Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
@DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
@DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
@AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
FROM EZ9010

UPDATE EZ4010
SET EZ4_DTAPRO=@DT_AUT
WHERE EZ4_PO_NUM=@PO_NUM AND
EZ4_NR_CON=@NR_CON

END





Respuesta Responder a este mensaje
#3 Alejandro Mesa
21/02/2005 - 21:57 | Informe spam
Gabriel,

Siempre y cuando insertes una sola fila. Debes considerar cuando insertes
mas de una fila a la vez, pues el trigger se dispara por cada sentencia y no
por cada fila.

Ejemplo:

use northwind
go

create table t (
colA int not null identity unique,
colB datetime,
colC varchar(25)
)
go

create trigger tr_set_colC_ins on t
after insert
as
set nocount on

update
a
set
a.colC = case when datediff(day, a.colB, getdate()) = 0 then 'Baja' else
null end
from
t as a
inner join
inserted as i
on a.colA = i.colA
go

insert into t (colB) values ('20050221')
insert into t (colB) values ('20050222')
insert into t (colB) values ('20050223')
insert into t (colB) values ('20050221')
go

select * from t
go

drop table t
go


AMB


"Gabriel South" wrote:

hOLA!

Gracias por tu ayuda, ya descubri como se hace!

Hay que usar la tabla "virtual" INSERTED

tipo

Select @var = (select columna from inserted)

Listo, eso toma el valor del registro actual..

Gabriel




"Alejandro Mesa" escreveu na
mensagem news:
> Gabriel,
>
> Pudieras postear la estructura de ambas tablas y como estas se
> relacionan?.
> Necesitamos saber cual es la logica para actualizar la segunda tabla.
>
>
> AMB
>
>
> "Gabriel South" wrote:
>
>> Hola!
>>
>> Tengo este trigger que se ejecuta al hacer un UPDATE en un campo
>> especifico,
>> y queria saber como tomar los valores del registro que fue modificado
>> para
>> buscar esos datos en otra tabla y modificar otro valores...
>>
>> Intento obtener los valores del registro que fue modificado con
>>
>> Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
>> @DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
>> @DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
>> @AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
>> FROM EZ9010
>>
>> Pero no toma los del modificado, si no de todos!...
>>
>> Como hago?????????
>>
>> Gracias
>>
>> Gabriel.
>>
>>
>>
>>
>> Aqui esta mi trigger:
>>
>> ALTER TRIGGER CheckEZ9
>> ON dbo.EZ9010
>> FOR UPDATE
>> AS
>>
>> IF UPDATE(EZ9_DT_AUT)
>> BEGIN
>> Declare @PO_NUM VARCHAR(15),
>> @NR_CON VARCHAR(6),
>> @DT_AUT VARCHAR(8),
>> @OS VARCHAR(13),
>> @DOCTO VARCHAR(10),
>> @BANCO VARCHAR(3),
>> @AGENCIA VARCHAR(5),
>> @CONTA VARCHAR(10)
>>
>> Select @PO_NUM=EZ9_HAWB, @NR_CON=EZ9_CODINT,
>> @DT_AUT=EZ9_DT_AUT, @OS=EZ9_OS,
>> @DOCTO=EZ9_DOCTO, @BANCO=EZ9_BANCO,
>> @AGENCIA=EZ9_AGENCI, @CONTA=EZ9_CONTA
>> FROM EZ9010
>>
>> UPDATE EZ4010
>> SET EZ4_DTAPRO=@DT_AUT
>> WHERE EZ4_PO_NUM=@PO_NUM AND
>> EZ4_NR_CON=@NR_CON
>>
>> END
>>
>>
>>
>>
>>



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