sql触发器如何用,有什么作用。最好列举三个、、、
展开全部
触发器就是一个特殊的存储过程,但是触发器没有输入参数,顾名思义是由某种特定的条件触发的。举个例子,如果你有2个表a,b其中a里面的id跟b里面的id绑定,a是学生基本信息表,b是学生选课信息表,假使某个同学被开除,那么a表里面该同学的信息就必须删除,那么竟然该同学都被开除了,b表里面的信息自然也都应该一并除去,这个时候就可以建立这样一个触发器在a表上,触发条件为delete,只要发现a表有信息删除,则自动删除b表中相应id的信息。这样可以保证整个系统的健壮性。不会出现bug(学生基本信息都删除但是选课信息还在的现象)
以下是一个实例:
create trigger t_delete_TranD//触发器的名字为t_delete_TranD
on TranD//触发器建立在表TranD上
for delete//表TranD上的delete操作是触发器执行的触发条件
as
begin//以下是触发器执行的内容
update ContainerPick
set Status = '3',
TranNo = null
from ContainerPick a,deleted d
where a.TranNo = d.TranNo and
a.ContainerPackNo = d.DistNo and
a.Status = '4'
if @@error<>0//执行失败的处理
begin
raiserror 33334 '恢复栈板状态失败!'
rollback
return
end
end
go
以下是一个实例:
create trigger t_delete_TranD//触发器的名字为t_delete_TranD
on TranD//触发器建立在表TranD上
for delete//表TranD上的delete操作是触发器执行的触发条件
as
begin//以下是触发器执行的内容
update ContainerPick
set Status = '3',
TranNo = null
from ContainerPick a,deleted d
where a.TranNo = d.TranNo and
a.ContainerPackNo = d.DistNo and
a.Status = '4'
if @@error<>0//执行失败的处理
begin
raiserror 33334 '恢复栈板状态失败!'
rollback
return
end
end
go
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询