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

数据表

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

开始建立触发器,说明已经详细,不再细说

IF EXISTS(SELECT NAME FROM SYSOBJECTS WHERE NAME='TRI_INS_DEPT' AND TYPE='TR')

DROP TRIGGER TRI_INS_DEPT

GO

CREATE TRIGGER TRI_INS_DEPT

ON DEPT

FOR INSERT

AS
--声明变量
DECLARE @sDEPTORDER VARCHAR(30)
--从inserted表提取待插入的纪录
select @sDEPTORDER=DEPTORDER from inserted

--检测该条数据是否符合我们的要求,不符合的话.则要返回错误

IF @sDEPTORDER < 5

BEGIN
--禁止插入数据,事务回滚
rollback tran

raiserror('DEPTORDER is denyed When Lessen Then 5',16,10)

END


raiserror('DEPTORDER is denyed When Lessen Then 5',16,10)


--raiserror与PRINT类似,而且允许返回错误文本,严重级及状态
测试触发器

insert into dept (deptName,deptOrder) values ('财务部门','6')
go
insert dept (deptName,deptOrder) values ('搞笑部门','3')
go
select * from dept


提示文本显示

(所影响的行数为 1 行)

服务器: 消息 50000,级别 16,状态 10,过程 TRI_INS_DEPT,行 22
DEPTORDER is denyed When Lessen Then 5

(所影响的行数为 5 行)


IF @sDEPTORDER < 5 满足这个条件

所以执行到此处时候 抛出错误 事务回滚
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值