sql update 触发器 可获得被update的行的信息_MsSql

复制代码 代码如下:

create trigger TgName
on tb
for update
as
if update(recommend)
begin
update tb set commenddate=(getdate()) from tb inner join inserted on tb.vlistid=Inserted.vlistid
end

recommend表示被更新的字段.
关键在于Inserted表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1.插入操作(Insert)
Inserted表有数据,Deleted表无数据

2.删除操作(Delete)
Inserted表无数据,Deleted表有数据

3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)

生前何必久睡,死后自会长眠!

时间: 2024-11-05 17:22:24

sql update 触发器 可获得被update的行的信息_MsSql的相关文章

sql update 触发器 可获得被update的行的信息

复制代码 代码如下: create trigger TgName on tb for update as if update(recommend) begin update tb set commenddate=(getdate()) from tb inner join inserted on tb.vlistid=Inserted.vlistid end recommend表示被更新的字段. 关键在于Inserted表 触发器语句中使用了两种特殊的表:deleted 表和 inserted

SQL Server触发器insert update delete示例

·只有inserted表有数据时,当前操作为insert: ·inserted和deleted两张表都有数据时,当前操作为update: ·只有deleted表有数据时,当前操作为delete. 创建触发器用 CREATE TRIGGER  代码如下 复制代码 CREATE TRIGGER 触发器名称 ON 表名 FOR INSERT.UPDATE 或 DELETE AS nserted.deleted 这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录

sql-数据库insert,update触发器怎么同时写在一个触发器里

问题描述 数据库insert,update触发器怎么同时写在一个触发器里 数据库里有A表和B表,A表新增数据的时候,也往B表里新增数据,A表在修改数据的时候,B表会记录这条数据,同样是新增数据,但是当这条数据再次被修改时,B表里的记录永远是修改后的数据,求告知触发器insert 与update 写在一起时,是怎么写的 解决方案 create or replace xxx_trg trigger as after update or insert on table a for each row d

通过SQL SERVER 触发器实现跨库同步

有两个服务器,分别装有两个SQL Server A ,B A,B的表结构a,b 相同 A,B分别都会做一些INSERT,UPDATE,DELETE操作,要求AB的数据保持一致 (即A新增一条数据,要求B也新增,A更改一条数据,B也更改相应的) 是不是可以用触发器来实现 例程 /*--同步两个数据库的示例 有数据 srv1.库名..author有字段:id,name,phone, srv2.库名..author有字段:id,name,telphone,adress 要求: srv1.库名..aut

SQL Server触发器的基本语法与作用

原文 http://www.cnblogs.com/xiongzhuang/archive/2013/05/13/3076943.html 什么是触发器? 触发器是在对表进行插入.更新或删除操作时自动执行的存储过程 触发器通常用于强制业务规则 触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束 :可执行复杂的SQL语句(if/while/case).可引用其它表中的列 触发器定义在特定的表上,与表相关.  自动触发执行  不能直接调用  是一个事务(可回滚) 使用触发器的好处 触发

sqlserver-求一个sql的触发器统计数据

问题描述 求一个sql的触发器统计数据 小弟最近在做个小项目,有三张表,部门表,办公室表,人员表,统计表,结构是部门下有多个办公室,每个办公室有自己的成员,我想实现个触发器,统计每个部门的人数,比如男的有多少,女的有多少,然后保存在统计表中,添加和删除用户的时候更新统计表 部门表dpartment:did,dname 办公室表office:oid,did,oname 用户表user:uid,oid,usex,uname 统计表 statistics:sid,did,man,women 解决方案

SQL Server触发器

触发器可以做很多事情,但也会带来很多问题.使用它的技巧在于在适当的时候使用,而不要在不适当的时候使用它们. 触发器的一些常见用途如下: 弹性参照完整性:实现很多DRI不能实现的操作(例如,跨数据库或服务器的参照完整性以及很多复杂的关系类型). 创建神级跟踪:这意味写出的记录不仅跟踪大多数当前的数据,还包括对每个记录进行实际修改的历史数据.随着SQL Server2008中的更改数据跟踪功能的出现,创建审计跟踪不再那么流行,但以前使用的就是触发器. 执行与CHECK约束类似的功能,但是跨表,跨数据

SQL Server触发器和事务用法示例

本文实例讲述了SQL Server触发器和事务用法.分享给大家供大家参考,具体如下: 新增和删除触发器 alter trigger tri_TC on t_c for INSERT,delete as begin set XACT_ABORT ON declare @INSERTCOUNT int; declare @DELETECOUNT int; declare @UPDATECOUNT int; set @INSERTCOUNT = (select COUNT(*) from insert

SQL SERVER 触发器介绍

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DM