zoukankan      html  css  js  c++  java
  • 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')

    测试前

    第一次测试结果:

    第二次测试结果

  • 相关阅读:
    蓝桥杯程序设计 剪格子
    sql中 1<> 1=1的用处
    form表单的6种提交方式
    js中添加监听,判断是什么事件
    angular iFrame加载资源问题
    报表往子报表里传入list
    struts 文件上传
    获取运行时的泛型类型
    Dao层抽取BaseDao
    SSH整合总结
  • 原文地址:https://www.cnblogs.com/yanan7890/p/9284927.html
Copyright © 2011-2022 走看看