Ayuda con trigger

29/05/2008 - 23:27 por Francizk0 | Informe spam
Hola Gente

Mi Consulta es como puedo hacer un Trigger el cual solo se ejecute al
actualizar un campo de mi tabla ya que en esta tabla que manejo es
posible que otros campos se modifiquen pero no desencadenan ningana
accion, Es por eso que me gustaria saber si es Posible Crear un
Trigger que solo se ejecute al actualizar un campo de mi Tabla.

Preguntas similare

Leer las respuestas

#1 Gijon
30/05/2008 - 00:14 | Informe spam
Hola a mi entender yo haria dos cosas...

Programar el trigger solo para que se dispare en un UPDATE
y dos indicarle que solo sea cuando haya un actualizacion con la instruccion
UPDATE(CampoCambiadodelaTabla.) y uso de un if.

seria algo asi

Create trigger SoloActuliza param1, param2
FOR UPDATE
as
.
.
Instruciones que necesites
.
if update(Campo)
begin
insturcciones en caso de que haya cambiado "Campo"
end

GO




"Francizk0" wrote:

Hola Gente

Mi Consulta es como puedo hacer un Trigger el cual solo se ejecute al
actualizar un campo de mi tabla ya que en esta tabla que manejo es
posible que otros campos se modifiquen pero no desencadenan ningana
accion, Es por eso que me gustaria saber si es Posible Crear un
Trigger que solo se ejecute al actualizar un campo de mi Tabla.

Respuesta Responder a este mensaje
#2 Francizk0
30/05/2008 - 00:24 | Informe spam
Buena gente se Agradece la Colaboración
Respuesta Responder a este mensaje
#3 Alejandro Mesa
30/05/2008 - 00:28 | Informe spam
Francizk0,

Tienes una funcion que puede ser usada para indagar si la columna en
question, fue referenciada en la clausula SET de la sentencia UPDATE. Eso no
indica que hubo cambio, solo que fue citada en esa clausula, asi que si
deseas atrapar si en realidad hubo algun cambio, entonces tendras que
comparar la misma columna en las tablas virtuales INSERTED Y DELETED.

Ejemplo:

create table dbo.t1 (
c1 int not null identity(1, 1) constraint pk_t1 primary key,
c2 int not null,
c3 varchar(25) null,
c4 numeric(5, 2)
)
go

create trigger tr_t1_upd on dbo.t1
after update
as
if @@rowcount = 0 return

if update(c2) or update(c3)
begin
select
i.c1, d.c2 as c2_antes, i.c2 as c2_despues, d.c3 as c3_antes, i.c3 as
c3_despues
from
inserted as i inner join deleted as d on i.c1 = d.c1
where
(i.c2 <> d.c2)
or (i.c3 is null and d.c3 is not null)
or (i.c3 is not null and d.c3 is null)
or (i.c3 <> d.c3)
end
go

insert into dbo.t1(c2, c3, c4) values(2, 4, 3)
insert into dbo.t1(c2, c3, c4) values(3, 6, 5)
go

update dbo.t1
set c2 = c2 * 2, c3 = c3 * 3
where c2 % 2 = 0
go

update dbo.t1
set c3 = c3 / 3
where c3 % 3 = 0
go

update dbo.t1
set c2 = c2, c3 = c3
go

drop table dbo.t1
go


AMB


"Francizk0" wrote:

Hola Gente

Mi Consulta es como puedo hacer un Trigger el cual solo se ejecute al
actualizar un campo de mi tabla ya que en esta tabla que manejo es
posible que otros campos se modifiquen pero no desencadenan ningana
accion, Es por eso que me gustaria saber si es Posible Crear un
Trigger que solo se ejecute al actualizar un campo de mi Tabla.

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