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

    1.触发器语法

      CREATE TRIGGER<trigger name>

        ON [<模式名>.]<表名或视图名>

        [WITH ENCRYPTION]

        {{{FOR|AFTER} <[DELETE] [,] [INSERT] [,] [UPDATE] >} | INSTED OF}

        [WITH APPEND]

      AS

        <SQL语句>

    2.DML触发器类型

      参考:msdn

      1)AFTER 触发器:在执行 INSERT、UPDATE、MERGE 或 DELETE 语句的操作之后执行 AFTER 触发器。 如果违反了约束,则永远不会执行 AFTER 触发器;

      2)INSTEAD OF 触发器:插入、更新或删除行之前执行;

      比较:

    功能                   

    AFTER触发器

    INSTEAD OF触发器

    适用范围

    表和视图

    每个表或视图包含触发器的数量

    每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器

    每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器

    级联引用

    无任何限制条件

    不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。

    执行

    晚于:

    约束处理

    声明性引用操作

    创建插入的和删除的表

    触发操作

    早于:

    约束处理

    替代:

    触发操作

    晚于:

    创建插入的和删除的表

    执行顺序

    可指定第一个和最后一个执行

    不适用

    插入的和删除的表中的varchar(max)、nvarchar(max) 和 varbinary(max)列引用。

    允许

    允许

    插入的和删除的表中的 text、ntext 和 image 列引用。

    不允许

    允许

    3.插入表(instered表)和删除表(deleted表)

    对表的操作

    Inserted逻辑表

    Deleted逻辑表

    增加记录(insert)

    存放增加的记录

    删除记录(delete)

    存放被删除的记录

    修改记录(update)

    存放更新后的记录

    存放更新前的记录

    4.IF UPDATE()与COLUMNS_UPDATED()

      前一个用于判断是否更新了某列提供一个布尔判断;后一个提供以此检查多列能力。

    5.禁用启用触发器

      ALTER TABLE <table name> <ENABLE|DISABLE> TRIGGER <ALL|trigger name>

  • 相关阅读:
    JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
    Java内部类详解 2
    内部类详解(很详细)
    《JAVA与模式》之简单工厂模式
    《JAVA与模式》之适配器模式
    多态
    java Final关键字
    java实例初始化块
    tween.js
    three.js 之旅 (三)
  • 原文地址:https://www.cnblogs.com/xqhppt/p/3587954.html
Copyright © 2011-2022 走看看