zoukankan      html  css  js  c++  java
  • MSSQL 触发器

    触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,通常用于强制业务规则,一种高级约束,可以定义比用CHECK 约束更为复杂的约束。

    特点:

    View Code
    触发器定义在特定的表上,与表相关
    自动触发执行
    不能直接调用
    是一个事务(可回滚)
    
    触发器触发时:
    系统自动在内存中创建deleted表或inserted表
    只读,不允许修改;触发器执行完成后,自动删除
    inserted 表 
    临时保存了插入或更新后的记录行 
    可以从inserted表中检查插入的数据是否满足业务需求
    如果不满足,则向用户报告错误消息,并回滚插入操作
    deleted 表
    临时保存了删除或更新前的记录行 
    可以从deleted表中检查被删除的数据是否满足业务需求
    如果不满足,则向用户报告错误消息,并回滚插入操作

    类型:

    DELETE 触发器
    INSERT 触发器
    UPDATE 触发器

     语法:

    CREATE TRIGGER 触发器名称
    ON 
    { FOR|AFTER|INSTEAD ON}
    { [INSERT][,][DELETE][,][UPDATE]}
    AS
      SQL 语句[.....n]
    GO

    更详细的语法结构

    CREATE TRIGGER trigger_name 
    ON { table | view } 
    [ WITH ENCRYPTION ] 
    {
        { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
            [ WITH APPEND ]
            [ NOT FOR REPLICATION ]
            AS
            [ { IF UPDATE ( column )
                [ { AND | OR } UPDATE ( column ) ]
                    [ n ]
            | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                    { comparison_operator } column_bitmask [ n ]
            } ] 
            sql_statement [ n ] 
        } 
    } 

     Inserted 和 Deleted
     

    实例:

  • 相关阅读:
    Qt之模型/视图(自己定义button)
    Spring入门--控制反转(IOC)与依赖注入(DI)
    iOS关闭键盘简单实现(objc/swift)
    事件传递机制总结
    Skill of vim
    Java中ArrayList和LinkedList区别
    java截取url中的值
    MySQL主从复制与主主复制
    MySQL读写分离
    Mysql-Proxy代理配置
  • 原文地址:https://www.cnblogs.com/gzh4455/p/2547741.html
Copyright © 2011-2022 走看看