触发器常识,送分,我想做个触发器,更表某个字段执行一段SQL,更新另外一个字段时执行另外一段SQL,如何写啊
RT
------解决方案--------------------Create trigger trigName on 表名
for update
as
IF UPDATE(字段1)
begin
执行sql1
end
else
if UPDATE(字段2)
begin
执行sql2
end
go
------解决方案--------------------create trigger test on ta
for update as
if update(col1)
begin
.............
end
如果更新ta表的col1字段时,触发这个触发器
------解决方案--------------------如果你认为 字段的值不变化不算更新的话,还要稍微修改下,要比较更新前后的值的
------解决方案-----------------------例
create trigger tr_T1_Update
on T1 --T1为表名
for update
as
set nocount on
if update(字段1) --只有修改字段1才触发
begin
if exists ( --这个判断是防止无限递归的
select 1
from T2,Inserted i,deleted d
where i.id=d.id
and i.id=T2.id
and i.字段1 <> d.字段1
)
update T2
set 字段1=i.字段1
from T2,Inserted i,deleted d
where i.id=d.id
and i.id=T2.id
and i.字段1 <> d.字段1 --这个条件保证只有真正修改了值才触发
end
go
------解决方案--------------------i.字段1 <> d.字段1?
------解决方案--------------------楼上的都可以,
也可比较一下inserted表与deleted表的各字段变化,根据字段变化执行相应程序
------解决方案--------------------if exists(select * from sysobjects where name= 'trigName ')
drop trigger trigName
go
Create trigger trigName on 表名
for update
as
IF UPDATE(字段1)
begin
执行sql1
end
else
if UPDATE(字段2)
begin
执行sql2
end
go
------解决方案--------------------create trigger 触发器名 on 表名
for update
as
if update(字段1)
begin
--执行更新字段1的SQL语句
end
if update(字段2)
begin
--执行更新字段2的SQL语句
end
go