码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server ——触发器

时间:2015-01-14 22:49:04      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:

触发器是一类特殊的存储过程,在对表UPDATE、INSERT或DELETE语句时自动执行。

例题1.

--例题1.利用触发器显示‘改变了一条数据’
use mydb 
go
create trigger tr_info_add on info
for insert,delete
as
print 改变了一条数据
go

例题2.

技术分享

例题3.

--例题3:水果表改变numbers列时,向orderdetails表中添加数据水果编号,数量变化。

go 
create trigger tr_fruit_buy2 on fruit
for update, insert ,delete
as
--操作之前列的数据
declare @num1 int
select @num1=numbers from deleted
--操作之后的数据
declare @num2 int
select @num2=numbers from inserted
--数据差
declare @num int
set @num=@num1-@num2
--从deleted表中取出水果编号
declare @code varchar(50)
select @code=ids from deleted
--将数据差、水果编号输入orderdetails表
insert into orderdetails (ordercode,[count]) values (@code,@num)
go

select * from Fruit 
select * from OrderDetails 
--添加触发器,执行以下语句,触发两个触发器tr_fruitbuy和tr_fruit_buy2结果如下
update Fruit set numbers=numbers-5 where Ids =k002
select * from OrderDetails

技术分享

例题4

--例题:instead of触发器,删除info表的数据时,先删除work和family的数据,再删info相应的数据
select * from Info 
select * from Work 
select * from Family 
go

create trigger tr_person_deletet on info
instead of delete

as
--删除work相关数据
      --取出需要的delete信息
declare @code varchar(50)
select @code=code from deleted
      --删除
delete from Work where InfoCode =@code 

--删除family相关数据
delete from Family where InfoCode =@code 
--最后删除info表中的相关数据(info表是family表和work表的主表,最后才能执行删除)
delete from info where code=@code
go

--添加触发器后执行删除
delete from Info where Code =p002

技术分享

SQL Server ——触发器

标签:

原文地址:http://www.cnblogs.com/wllhq/p/4225015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!