SQL sever触发器的详细介绍

如何使用SQL sever触发器

什么是触发器?

**
触发器是在对表进行插入、更新或删除操作时自动执行的存储过程
触发器通常用于强制业务规则
触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束 :可执行复杂的SQL语句(if/while/case)、可引用其它表中的列
触发器定义在特定的表上,与表相关。
自动触发执行
不能直接调用
是一个事务(可回滚)

使用触发器的好处

触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。
触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用
其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,
如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。
一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

触发器的类型

DELETE 触发器
INSERT 触发器
UPDATE 触发器
创建触发的语法

CREATE TRIGGER trigger_name
 ON table_name
 [WITH ENCRYPTION]
  FOR [DELETE, INSERT, UPDATE]
 AS 
  T-SQL语句
GO
 

注意:WITH ENCRYPTION表示加密触发器定义的SQL文本 DELETE, INSERT, UPDATE指定触发器的类型

insert 触发器示例

/

创建insert触发器,在上网记录表recordInfo上创建插入触发器/

create trigger tr_insert_recordInfo
on recordInfo
for insert
 as

/定义变量,用于临时存储插入的会员号、电脑编号和卡的编号/

declare @cardId char(10)
declare @PCId int
declare @CardNumber char(10)

/从inserted临时表中获取插入的记录行的信息,包括电脑的编号、卡的编号/

select @PCId=PCId,@cardId=CardId from inserted
/*根据电脑编号修改电脑的使用状态*/
update PCInfo set PCUse=1 where PCId=@PCId
/*根据卡的编号查询会员号*/
select @CardNumber
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值