zoukankan      html  css  js  c++  java
  • SqlServer触发器常用语法AFTER、INSTEAD OF及其详解

    先创建一个简单的触发器

    CREATE TRIGGER trigger_name
     ON table_name
     [WITH ENCRYPTION]
      FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE]
     AS 
      T-SQL语句
    GO

    触发器位置:数据库>表>我这里是表名table_name>触发器

    解释:
    1、[WITH ENCRYPTION]:表示将该触发器加密,加密后触发器执行方法将无法被查看

    [DELETE, INSERT, UPDATE]对应为当执行删除、插入、更新三种动作时被触发
    执行insert时,获取插入后的数据,可用select*from inserted读取
    执行delete时,获取删除前的数据,可用select*from deleted读取
    执行update时,获取更新前的数据,可用select*from deleted读取,获取更新后数据,可用select*from inserted读取


    2、AFTER:操作成功后(这里是插入table_a后),执行触发器操作
    例如
    CREATE TRIGGER T_A
    ON table_a
    after insert
    as
    begin

    declare @id int,@name varchar(20)
    select @id=id,@name=name from inserted
    insert into table_b values(@id,@name)

    end


    3、INSTEAD OF:该触发器只是数据库的“导火线”,触发器是否能执行到想要的结果,需要由触发器中的逻辑进行判断,因为该触发器往往伴随着很多的判断分支。
    例如
    CREATE TRIGGER T_B
    ON table_a
    instead of insert
    as
    begin

    IF EXISTS(select*from table_a where name =(select name from inserted))
    ROLLBACK TRANSACTION
    PRINT '该姓名已存在'

    ELSE
    INSERT INTO table_a VALUES(select*from inserted)
    PRINT '插入成功'

    end
  • 相关阅读:
    C++前置声明的几种方式
    C++中看上去有些奇怪的惯用法:int和bool之间的转换
    在线文档生成工具 mkdocs 使用方法
    对Java前四章的感受
    类与对象的学习之路
    201671010133 201620172 《java程序设计》 初学java!
    神奇的位运算及其简单应用
    mysql 和 mongo db 语法对比
    phpMyAdmin 配置
    mongoDB 基础指令
  • 原文地址:https://www.cnblogs.com/jijm123/p/11597359.html
Copyright © 2011-2022 走看看