打赏

sqserver2008触发器

 

@参考博文

先上代码

先建个表用于测试

 

CREATE TRIGGER INSERT_forbidden on s after INSERT
AS
BEGIN
    RAISERROR('禁止向s中插入数据',2,3)
    ROLLBACK--不加这一句不会回滚,抛错后将直接插入
END

 上述触发器执行情况:当向s表插入数据时禁止插入,插入时抛错(raiserror)如下

 

语法:

CREATE TRIGGER trigger_name
 ON table_name
 [WITH ENCRYPTION]
  FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE]
 AS 
BEGIN -- T
-SQL语句
END
GO --with encryption 表示加密触发器定义的sql文本 --delete,insert,update指定触发器的类型

 

 20180815:解决sqlserver无before问题,用instead of替换

CREATE TRIGGER INSERT_forbidden on reg instead of INSERT
AS
BEGIN
    if EXISTS(select 1 from reg where regStr=(select regstr from INSERTED))BEGIN
             RAISERROR('禁止向注册表中插入重复数据',1,1)
                ROLLBACK--不加这一句不会回滚,抛错后将直接插入
    END ELSE BEGIN
        INSERT into reg (regStr) select regStr from INSERTED
    END   
END

测试

INSERT into reg VALUES('4')

测试前

第一次测试结果:

 

 

第二次测试结果

 

posted @ 2018-07-09 17:37  每天都要学一点  阅读(209)  评论(0编辑  收藏  举报