列级触发器 SQL Server
列级触发器就是对表中的某列进行添加或修改时所执行的触发器。
建立列级触发器与建立触发器的语法是相同的,只是在创建时使用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相关推荐
- mysql 触发器 列级_列级触发器 SQL Server
列级触发器就是对表中的某列进行添加或修改时所执行的触发器. 建立列级触发器与建立触发器的语法是相同的,只是在创建时使用IF UPDATE(column)参数. 语法: CREATE TRIGGER t ...
- sql server复制表_具有超过246列的表SQL Server复制
sql server复制表 问题 (Problem) In our environment we use SQL Server merge replication to replicate data ...
- 将具有默认值的列添加到 SQL Server 中的现有表
问: 如何将具有默认值的列添加到 SQL Server 2000 / SQL Server 2005 中的现有表? 答1: HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业 ...
- 列顺序对SQL Server复合索引的影响
In this article, we will explore the Composite Index SQL Server and the impact of key order on it. W ...
- 创建数据库是列名无效咋办_列创建后,sql server上的列名无效
在这种情况下,您可以通过将列添加为NOT NULL并在一个语句 as per my answer here中设置现有行的值来避免此问题. 更一般来说,问题是解析/编译问题.在执行任何语句之前,SQL ...
- mysql中如何调整列的顺序,SQL Server 数据库调整表中列的顺序操作
SQL Server 数据库中表一旦创建,我们不建议擅自调整列的顺序,特别是对应的应用系统已经上线,因为部分开发人员,不一定在代码中指明了列名.表是否可以调整列的顺序,其实可以自主设置,我们建议在安装 ...
- SQL Server 触发器学习总结
SQL菜鸟入门级教程之触发器 触发器简介: 触发器(trigger)是种特殊的存储过程,它的执行不是由程序调用,也不需要手动操作,它是由事件来触发,事件大家应该非常熟悉吧,比如按钮的Click事件 ...
- SQL Server编程(06)触发器
SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器 ...
- SQL Server 触发器 详细讲解
最近在做微信活动,需要用到存储过程,在网上找了下感觉使用触发器更好些,和大家分享下 希望对你有用. 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动 ...
最新文章
- 利用Use Case为系统行为建模(1)
- java清空字符串_java面向对象,垃圾回收机制
- c#listView
- java用不用stream_Java parallelStream不使用预期的线程数
- 60个数据窗口技巧(转)
- 看后至少多活十年--只需十分钟
- sqlserver中where条件加判断
- C++ msdn 离线版下载地址
- 服务器网站常用端口号,web服务器常用端口号
- Science:拟南芥根系三萜化合物塑造特异的微生物组
- 企业超过三个月不支付竞业补偿,劳动者去同业公司上班会被告赔偿吗?
- 杂谈——如何合并两个有序链表(时间复杂度为O(n))
- iptable详细配置
- Java 异常(Exceptions)
- 【OpenAI-maddpg】训练时遇到的一些错误
- QT显示Raw格式的图片
- 什么是智能双线机房和BGP智能双线机房的原理
- Laravel 添加自定义全局函数
- 阿里云服务器快速安装Mysql,贴心手把手教你安装,本人踩过很多坑!(我的服务器系统CentOS 7.8 64位)
- 智能车浅谈——17届极速越野篇
热门文章
- The type javax.xml.rpc.ServiceException cannot be resolved.It is indirectly
- Emacs+hideif.el 隐藏预编译代码(或彩色显示预编译代码)
- 单片机拼字程序怎么做_小程序商城怎么做?做一个小程序需要多少钱
- 迷你计算机笔记本,迷你笔记本电脑我选择了它,性能不错还超轻便携
- tushare数据存入mysql代码_下载股票的历史日交易数据并存入数据库——基于tushare...
- Spark源码分析之Master状态改变处理机制原理
- (68)SPI工作模式有哪些?分为几种极性模式。
- (37)FPGA面试技能提升篇(IUS仿真工具)
- 【蓝桥杯单片机】独立按键和矩阵按键
- linux中split函数用法,Linux split命令参数及使用方法详解