数据表
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 满足这个条件
所以执行到此处时候 抛出错误 事务回滚