• 数据库系列之T-SQL(触发器)


    什么是触发器


    触发器是一种特殊的存储过程,只能由事件驱动调用,而无法直接调用。

    触发器有什么用


    当对数据库的相关对象(数据库、表、视图)进行某些特定的操作时,数据库会自动调用相应的触发器。无需再执行增删改或存储过程的操作,让程序更自动化。

    触发器怎么用


    3.1 触发器的触发方式
    SQL Server 按触发器被激活的时机可分为后触发和替代触发两种触发方式
    引起触发器执行的修改语句若违反了某种约束,后触发方式不会激活触发器,替代触发方式会激活触发器
    (1)后触发
    当引起触发器执行的修改语句执行,并通过各种约束检查后,才执行触发器,这种触发方式称为后触发
    创建这种触发器使用AFTER或FOR关键字
    后触发只能创建在表上,而不能创建在视图上
    (2) 替代触发
    当执行可引起触发器执行的修改语句时,停止该修改语句的执行,仅执行其触发器,这种触发方式称为替代触发
    创建这种触发器使用INSTEAD OF关键字
    替代触发可创建在表上,也可以创建在视图上
    3.2 激活触发器时的临时表
    每个触发器被激活时,系统都为它自动创建两个临时表
    INSERTED表:需要添加或更新后的数据
    DELETED表:需要删除或更新前的数据
    这两个表的结构与被激活触发器的表结构相同
    触发器执行完成后,这两个表将被自动删除
    3.3 示例一:替代触发

    Create trigger tri_dropCustomer on customers
    Instead of delete
    As
        delete from orders
        where customerid=(
              select customerid from deleted)
    
        delete from customers
        where customerid=(
              select customerid from deleted)
    go
    3.4 示例二:后触发
    create trigger tri_updateOrderdate on Orders
    after update
    as
        declare @oldOrderdate datetime
        declare @newOrderdate datetime
        select @oldOrderdate=orderdate from deleted
        select @newOrderdate=orderdate from inserted
        if @oldOrderdate<>@newOrderdate
        begin
            print '订单日期不能修改'
            rollback transaction
        end
    go

  • 相关阅读:
    自定义适用于手机和平板电脑的 Dynamics 365(四):窗体脚本
    自定义适用于手机和平板电脑的 Dynamics 365(三):显示的实体
    自定义适用于手机和平板电脑的 Dynamics 365(二):窗体自定义项
    自定义适用于手机和平板电脑的 Dynamics 365(一):主页
    使用IEDA远程调试
    Apache Roller 5.0.3 XXE漏洞分析
    fastjson 反序列化漏洞笔记,比较乱
    JAVA常见安全问题复现
    Spring Integration Zip不安全解压(CVE-2018-1261)漏洞复现
    php一句话反弹bash shell
  • 原文地址:https://www.cnblogs.com/cmhunter/p/4280576.html
Copyright © 2020-2023  润新知