列级触发器就是对表中的某列进行添加或修改时所执行的触发器。
建立列级触发器与建立触发器的语法是相同的,只是在创建时使用IF UPDATE(column)参数。
语法:
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 ]
}
}
参数说明:
IF UPDATE (column):测试在指定列上进行的INSERT或UPDATE操作,不能用于DELETE操作,可以指定多列。因为在ON子句中指定了表名,所以在 IF UPDATE子句中的列名前不要包含表名。若要测试在多个列上进行的INSERT或UPDATE操作,可在第一个操作后指定单独的 UPDATE(column)子句。在INSERT操作中IF UPDATE将返回TRUE值,因为这些列插入了显式值或隐性(NULL)值。
本示例在“MR_SQL”数据库的“MR_Stu_XX”表中创立一个列级触发器,当添加或修改“MR_Stu_XX”表中的“学生姓名”字段时,将在创建的“MR_Stu_JL”表中加以记录。
使用Transact-SQL建立列级触发器
操作步骤如下:
(1)打开SQL查询分析器。
(2)SQL语句如下:
在MR_SQL数据库中创建数据表MR_Stu_JL,用于记录修改MR_Stu_XX表时的时间、用户名等。
USE MR_SQL
GO
CREATE TABLE MR_Stu_JL
(
Data datetime,
MR_id char(4),
state varchar(16),
MR_name varchar(30)
)
GO
在“MR_Stu_XX”表中创建列级触发器“TRI_Stu_JL”,对“MR_Stu_XX”表的“学生编号”进行添加、修改时执行“TRI_Stu_JL”触发器。
CREATE TRIGGER TRI_Stu_JL ON dbo.MR_Stu_XX
FOR INSERT,UPDATE
AS
DECLARE @id char(4)
Select @id=学生编号 from Inserted
if UPDATE(学生姓名)
INSERT MR_Stu_JL VALUES(Getdate(),@id,'修改学生姓名',user_name())
GO

转载于:https://www.cnblogs.com/johnchain/archive/2012/12/18/2798128.html

列级触发器 SQL Server相关推荐

  1. mysql 触发器 列级_列级触发器 SQL Server

    列级触发器就是对表中的某列进行添加或修改时所执行的触发器. 建立列级触发器与建立触发器的语法是相同的,只是在创建时使用IF UPDATE(column)参数. 语法: CREATE TRIGGER t ...

  2. sql server复制表_具有超过246列的表SQL Server复制

    sql server复制表 问题 (Problem) In our environment we use SQL Server merge replication to replicate data ...

  3. 将具有默认值的列添加到 SQL Server 中的现有表

    问: 如何将具有默认值的列添加到 SQL Server 2000 / SQL Server 2005 中的现有表? 答1: HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业 ...

  4. 列顺序对SQL Server复合索引的影响

    In this article, we will explore the Composite Index SQL Server and the impact of key order on it. W ...

  5. 创建数据库是列名无效咋办_列创建后,sql server上的列名无效

    在这种情况下,您可以通过将列添加为NOT NULL并在一个语句 as per my answer here中设置现有行的值来避免此问题. 更一般来说,问题是解析/编译问题.在执行任何语句之前,SQL ...

  6. mysql中如何调整列的顺序,SQL Server 数据库调整表中列的顺序操作

    SQL Server 数据库中表一旦创建,我们不建议擅自调整列的顺序,特别是对应的应用系统已经上线,因为部分开发人员,不一定在代码中指明了列名.表是否可以调整列的顺序,其实可以自主设置,我们建议在安装 ...

  7. SQL Server 触发器学习总结

    SQL菜鸟入门级教程之触发器 触发器简介:   触发器(trigger)是种特殊的存储过程,它的执行不是由程序调用,也不需要手动操作,它是由事件来触发,事件大家应该非常熟悉吧,比如按钮的Click事件 ...

  8. SQL Server编程(06)触发器

    SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器 ...

  9. SQL Server 触发器 详细讲解

    最近在做微信活动,需要用到存储过程,在网上找了下感觉使用触发器更好些,和大家分享下 希望对你有用. 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动 ...

最新文章

  1. 利用Use Case为系统行为建模(1)
  2. java清空字符串_java面向对象,垃圾回收机制
  3. c#listView
  4. java用不用stream_Java parallelStream不使用预期的线程数
  5. 60个数据窗口技巧(转)
  6. 看后至少多活十年--只需十分钟
  7. sqlserver中where条件加判断
  8. C++ msdn 离线版下载地址
  9. 服务器网站常用端口号,web服务器常用端口号
  10. Science:拟南芥根系三萜化合物塑造特异的微生物组
  11. 企业超过三个月不支付竞业补偿,劳动者去同业公司上班会被告赔偿吗?
  12. 杂谈——如何合并两个有序链表(时间复杂度为O(n))
  13. iptable详细配置
  14. Java 异常(Exceptions)
  15. 【OpenAI-maddpg】训练时遇到的一些错误
  16. QT显示Raw格式的图片
  17. 什么是智能双线机房和BGP智能双线机房的原理
  18. Laravel 添加自定义全局函数
  19. 阿里云服务器快速安装Mysql,贴心手把手教你安装,本人踩过很多坑!(我的服务器系统CentOS 7.8 64位)
  20. 智能车浅谈——17届极速越野篇

热门文章

  1. The type javax.xml.rpc.ServiceException cannot be resolved.It is indirectly
  2. Emacs+hideif.el 隐藏预编译代码(或彩色显示预编译代码)
  3. 单片机拼字程序怎么做_小程序商城怎么做?做一个小程序需要多少钱
  4. 迷你计算机笔记本,迷你笔记本电脑我选择了它,性能不错还超轻便携
  5. tushare数据存入mysql代码_下载股票的历史日交易数据并存入数据库——基于tushare...
  6. Spark源码分析之Master状态改变处理机制原理
  7. (68)SPI工作模式有哪些?分为几种极性模式。
  8. (37)FPGA面试技能提升篇(IUS仿真工具)
  9. 【蓝桥杯单片机】独立按键和矩阵按键
  10. linux中split函数用法,Linux split命令参数及使用方法详解