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

来源:互联网 发布:淘宝东西刚买完就下架 编辑:程序博客网 时间:2024/05/17 08:12
数据表

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 满足这个条件

所以执行到此处时候 抛出错误 事务回滚