Mssql触发器学习例子之UPDATE触发器

update触发器用于限制用户发出的update语句,用户的修改规则必须在规定之内
update触发器合并了insert触发器和delete触发器的作用
因为更新分为两个操作,删除原数据行,插入新数据行。

删除的数据保存在deleted表中 插入的数据保存在inserted表中

下面这段代码建立了一个update触发器

在用户违规操作时候,同样为了更好的说明update触发器,我没有用事务回滚来取消操作
请看代码

IF EXISTS(Select Name From Sysobjects Where Name='Tri_UPD_Dept' And Type='TR')

DROP TRIGGER Tri_UPD_Dept

go

CREATE TRIGGER Tri_UPD_Dept

ON DEPT

FOR UPDATE

AS
--声明变量
Declare @sDEPTNAME1 VARCHAR(30),@SDEPTNAME2 VARCHAR(30)


--从inserted表提出已插入数据的DEPTNAME值

Select @sDEPTNAME1=DEPTNAME From Inserted


--如更新好后,DEPTNAME,不在我们制定的范围内,撤销操作!

IF @sDEPTNAME1 not In ('网络部门','行政部门','人事部门','生产部门','市场部门')

Begin
Select @sDEPTNAME2=DeptName from deleted

update dept set deptName=@sDEPTNAME2 Where DeptName=@sDEPTNAME1

Print 'The Row Is deny To updated'

End


运行后显示命令执行成功

同样我的表中只有三个字段

DEPTNAME DEPTORDER DEPTID
市场部        1          1
商务部        2           18
人事部         3          19


执行

update dept set deptName='网络财务部门' where deptname='市场部'


抛出错误

(所影响的行数为 1 行)

The Row Is deny To updated

(所影响的行数为 1 行)

执行

update dept set deptName='人事部门' where deptname='市场部'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值