zoukankan      html  css  js  c++  java
  • SQL Sever触发器的基本语法与作用

    本人萌新,对sql语句不是特别了解,有错误,或者解释不正确请不吝赐教,谢谢啦

     

    什么是触发器?

    • 触发器是在对表进行插入、更新或删除操作时自动执行的存储过程
    • 触发器通常用于强制业务规则
    • 触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束 :可执行复杂的SQL语句(if/while/case)、可引用其它表中的列
    • 触发器定义在特定的表上,与表相关。
    •  自动触发执行
    •  不能直接调用
    •  是一个事务(可回滚)

    使用触发器的好处

    触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。
    触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用
    其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,
    如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。
    一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。
     

    触发器的类型

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

    创建触发的语法

    CREATE TRIGGER trigger_name      --触发器名称
     ON table_name                   --触发的表
     [WITH ENCRYPTION]
      FOR [DELETE, INSERT, UPDATE]   --选择触发器类型
     AS                              --触发后要做的语句
      T-SQL语句
    GO                               --结束标记

    --删除触发器

    drop TRIGGER 触发器名

    ----------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------实例2

    ----触发器添加(delete):当删除子表时触发自动删除主表,

    CREATE TRIGGER dele -- dele触发器
    ON result --要触发的表(子表)
    FOR DELETE --删除触发 [ insert, update,delete ]可选

    AS --触发之后做的事情
    delete studb --主表

    where id=( SELECT sid FROM deleted ) --daleted:表示删除的那条数据的对象

    go --结束标签

    delete result where id=43
    --删除触发器
    drop TRIGGER dele


    select * from dbo.studb
    select * from result

    ------------------------------------------------------------------------------------------------------------------------
    ------实例2

    --------------修改触发器

    CREATE TRIGGER updat -- update触发器
    ON studb --要触发的表(子表)
    FOR update --修改触发 [ insert, update,delete ]可选

    AS --触发之后做的事情

    update result SET mark=99
    where sid=( SELECT id FROM inserted )

    go --结束标记

    update dbo.studb
    SET
    name = '小啦'
    where id= 23

    --删除触发器操作
    drop TRIGGER updat

  • 相关阅读:
    【LeetCode】589.N叉树的前序遍历(递归+迭代,java实现,详细分析)
    百度网盘偷偷更新,终于实现免费不限速了!
    如何调整DOS窗口的宽高
    输入adb shell 时 提示error: more than one device and emulator
    logcat不显示信息
    安卓打开File Explorer里面不显示内容
    android查看源码的时候看不了
    This version of the rendering library is more recent than your version of ADT plug-in. Please update
    eclipse或者AS链接手机真机之后,logcat里面日志信息乱跳
    Android ADB使用之详细篇
  • 原文地址:https://www.cnblogs.com/wangshaod/p/9547709.html
Copyright © 2011-2022 走看看