Trigger condicional

11/03/2005 - 06:05 por Jose | Informe spam
Tengo que hacer un trigger condicional para update en la tabla T1.

Quiero que en el trigger si determinado campo de T1 , digamos t1.campo1
tiene el valor de 1 entonces me actualice el campo T2.campo3 (de la tabla
T2) en base a una clave foranea.
De igual manera, si t1.campo1 tiene el valor de 2 quiero que me actualice
otro campo, el T2.campo4 de la tabla foranea T2.

Como puedo hacer esto en un trigger ?


Gracias

Preguntas similare

Leer las respuestas

#1 Maxi
11/03/2005 - 13:34 | Informe spam
Hola lo que deberias hacer son dentro del trigger tantos updates como
condiciones estes necesitando por ej

UPDATE TABLA SET CAMPO3 = I.CAMPO3
FROM TABLA,INSERTED I WHERE I.CAMPO_ID = TABLA.CAMPO_ID AND
I.T1 = 1

Asi para las otras condiciones


Salu2
Maxi


"Jose" escribió en el mensaje
news:%
Tengo que hacer un trigger condicional para update en la tabla T1.

Quiero que en el trigger si determinado campo de T1 , digamos t1.campo1
tiene el valor de 1 entonces me actualice el campo T2.campo3 (de la tabla
T2) en base a una clave foranea.
De igual manera, si t1.campo1 tiene el valor de 2 quiero que me actualice
otro campo, el T2.campo4 de la tabla foranea T2.

Como puedo hacer esto en un trigger ?


Gracias





Respuesta Responder a este mensaje
#2 Alejandro Mesa
11/03/2005 - 13:45 | Informe spam
Jose,

Como se relacionan las tablas?
Que valor quieres en los campos campo3 y campo4 de la tabla t2?

create trigger tr_t1_upd on t1
for update
as
set nocount on

if update(campo1)
begin

update
a
set
a.campo3 = b.?
from
t2 as a
inner join
t1 as b
on a.pk = b.fk and b.campo1 = 1

if @@error != 0
begin
rollback transaction
raiserror('Error updating table t1.', 16, 1)
return
end

update
a
set
a.campo4 = b.?
from
t2 as a
inner join
t1 as b
on a.pk = b.fk and b.campo1 = 2

if @@error != 0
begin
rollback transaction
raiserror('Error updating table t1.', 16, 1)
return
end
end
go


AMB

"Jose" wrote:

Tengo que hacer un trigger condicional para update en la tabla T1.

Quiero que en el trigger si determinado campo de T1 , digamos t1.campo1
tiene el valor de 1 entonces me actualice el campo T2.campo3 (de la tabla
T2) en base a una clave foranea.
De igual manera, si t1.campo1 tiene el valor de 2 quiero que me actualice
otro campo, el T2.campo4 de la tabla foranea T2.

Como puedo hacer esto en un trigger ?


Gracias






Respuesta Responder a este mensaje
#3 Alejandro Mesa
11/03/2005 - 14:37 | Informe spam
Corrección,

Despues de leer el msg de Maxi, me di cuenta que estoy usando la tabla
incorrecta. En la sentencia UPDATE, usa la tabla INSERTED en vez de t1.


AMB


"Alejandro Mesa" wrote:

Jose,

Como se relacionan las tablas?
Que valor quieres en los campos campo3 y campo4 de la tabla t2?

create trigger tr_t1_upd on t1
for update
as
set nocount on

if update(campo1)
begin

update
a
set
a.campo3 = b.?
from
t2 as a
inner join
t1 as b
on a.pk = b.fk and b.campo1 = 1

if @@error != 0
begin
rollback transaction
raiserror('Error updating table t1.', 16, 1)
return
end

update
a
set
a.campo4 = b.?
from
t2 as a
inner join
t1 as b
on a.pk = b.fk and b.campo1 = 2

if @@error != 0
begin
rollback transaction
raiserror('Error updating table t1.', 16, 1)
return
end
end
go


AMB

"Jose" wrote:

> Tengo que hacer un trigger condicional para update en la tabla T1.
>
> Quiero que en el trigger si determinado campo de T1 , digamos t1.campo1
> tiene el valor de 1 entonces me actualice el campo T2.campo3 (de la tabla
> T2) en base a una clave foranea.
> De igual manera, si t1.campo1 tiene el valor de 2 quiero que me actualice
> otro campo, el T2.campo4 de la tabla foranea T2.
>
> Como puedo hacer esto en un trigger ?
>
>
> Gracias
>
>
>
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida