当另一个字段发生实际变化时,sql server触发器更新时间字段

2024-01-04

我需要一个触发器,如果​​表行的一个或多个字段被更新,该触发器就会更新该行字段。

假设您有一个雇员表,如下所示:

EmployeeId    Name       Address                ModificationDate
1             Spears     27 Sober Road 
2             Jagger     65 Straight Street 

如果除EmployeeId and ModificationDate字段,触发器应该生成一个时间值并更新ModificationDate.

实际更改的示例 1:

update dbo.Employees
set Name = 'Beggar'
where EmployeeId = 2

没有实际变化的示例 2:

update dbo.Employees
set Name = 'Jagger'
where EmployeeId = 2

如果执行示例 2 中的更新,触发器不应更新 ModificationDate 字段。


在触发器中,您可以访问“插入”和“删除”系统表。 这些表包含表中已由导致触发器执行的语句更新的记录。

对于“UPDATE”触发器,“插入”表包含处于新状态的记录,“删除”表包含具有旧值的记录。

您必须利用这两个表来找出哪些记录确实发生了更改,并更新这些记录的 ModificationDate。

我认为触发器内的语句看起来像这样。 (我没有测试过)

UPDATE myTable
SET ModificationDate = getdate()
FROM inserted, deleted
WHERE inserted.EmployeeId = deleted.EmployeeId
AND (inserted.Name <> deleted.Name OR inserted.Address <> deleted.Address)

编辑: 我玩了一下:

create trigger upd_employee on [employee] after update
as
begin

    update employee
    set modifdate = getdate()   
    where employee.empid in 
    ( select i.empid
      from inserted i
      inner join deleted d on i.empid = d.empid 
      where (i.name <> d.name or i.address <> d.address )
    )
end

insert into employee 
values
(1, 'Frederik' , '', null)

insert into employee
values
(2, 'User', '', null)

update employee
set [address] = 'some address'

select * from employee

update employee set [name] = 'test' where empid = 2

select * from employee

update employee set [name] = 'test' where empid = 2

select * from employee
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当另一个字段发生实际变化时,sql server触发器更新时间字段 的相关文章

随机推荐

  • 使用 jquery 和 canvas 从 html 元素 id 到另一个 html 元素绘制线条

    html和jquery是否可以只通过引用元素id来画一条线 我在文本中有一个重要的单词 并且想在该单词和描述它的图像之间画一条线 我已经看到可以使用画布在元素之间进行绘制 但它们的样式位置设置为绝对 由于我的元素是文本中的单词 因此我无法将
  • Windows 运行时组件中无法继承?

    设想 我的 Windows 运行时组件项目中有 3 个类 A B C class A public sealed class B A public sealed class C A 编译上面的代码 我得到以下内容error 可访问性不一致
  • 如何检查 pandas 数据框中的字符串值序列并输出后续内容

    我正在尝试检查数据框中 B B B 的顺序 d A A B C D B B B A A E F B B B F A A testdf pd DataFrame data d array seq pd Series B B B for i i
  • 为什么 cerr 输出比 cout 快?

    使用 cout 需要多一点时间来输出语句 这对我来说不太好 但是当使用 cerr 时 输出速度更快 为什么 只是想帮忙 cout gt 常规输出 控制台输出 cerr gt 错误输出 控制台错误 cout 是缓冲的 而 cerr 不是 因此
  • 在 MYSQL 搜索中使用 URL 参数

    我正在尝试为产品建立一个搜索页面 其中我有两个表产品和库存 我在产品中有我的产品详细信息 在库存中有库存详细信息 如颜色 尺寸 价格等 请提出一个解决方案 我真的陷入困境 我需要一个更好的解决方案来实现强大的设计 以下是所有必要的详细信息
  • Spring RMI 远程注解配置

    我已经为此寻找了一段时间 但似乎找不到答案 我正在使用 Spring RMI 远程处理 并且我想使用注释配置 这可能吗 据我所知 spring 没有基于标准注释的 RMI 支持 我碰到这个链接 http rpgkan blogspot in
  • 如何以编程方式向 contentPlaceHolder 添加内容?

    我有一个母版页 我的所有页面都继承它 对于格式设置 我想将一页与另一页不同的内容放置在 ContentPlaceHolder 中 现在 我怎样才能将所有内容插入其中 由于我计划用数据库中的内容填充 ContentPlaceHolder 我想
  • Spring 中的拦截器与方面?

    我正在尝试在 Spring 中使用拦截器 我想在某些方法上实现拦截器 以在调用这些方法时处理特定逻辑 我还想不使用 Web 框架 因为我倾向于使用 Spring 作为后端 而不使用任何标头 经过搜索 我认为 spring 方法称为方面 您能
  • git 仅从一个分支删除文件

    当我从一个分支删除文件时 它会从所有分支中删除 我能做些什么 使用 git 删除文件并保留该项目状态时 git commit 它只会在该提交及其子项中被删除 说 在该分支中 当将该分支合并到另一个分支时 该文件很可能会被删除 除非在另一个分
  • 如何导出共享案例类的属性

    我正在尝试在服务器和客户端之间共享案例类 我在两端都使用了 upickle 对象及其数据在两端都可以很好地使用 共享类 case class Foo var id Long var title Description 但是我需要在客户端导出
  • 在 iOS 设备上尝试时 Flutter 签名无效

    TL DR 编辑 2020 05 06 我的应用程序从 iOS 13 4 开始正确安装 但一段时间后应用程序在启动时崩溃 我必须重新安装它 我不知道为什么 也许是在 iOS 更新之后 另请参阅下面的答案 https stackoverflo
  • 如何从 python 3.5 脚本创建独立的可执行文件?

    大多数可用程序仅支持 python 版本 3 4 您可以使用py安装程序 http www pyinstaller org支持Python 3 5 要使用 pip 安装它 请在终端中执行 pip install pyinstaller 要制
  • Javascript 匹配在 IE 中不起作用

    我有以下代码 function rgb2hex rgb rgb rgb match rgb d s d s d return hex rgb 1 hex rgb 2 hex rgb 3 似乎在 FF 和 Chrome 中工作正常 IE 给出
  • MavengeneratePackage用于从模式定义生成类的wsdl

    我正在使用 Java14 和 Spring Boot 我需要基于 wsdl 生成一些 Java 类 然而 它正在生成 它将所有生成的类放在平面结构中 而不是放在 wsdl 中指定的包中 如果有人可以提供一些建议 我将不胜感激 更多细节 PO
  • 更改单选按钮图像,帮助

    大家好 我不是一个很好的程序员 但仍然需要做一些编码 现在我在使用 jQuery 更改单选按钮图像时遇到问题 我已经在网上找到了这段代码 但它仍然不起作用 它更改了单选按钮图像 但是当我尝试选择时 它仅更改第一个单选框的图片 每次 这是我的
  • C# List<> 将列表添加到字典

    Dictionary
  • 使用列表元素的名称向列表中的每个数据框添加一列

    我有一个包含多个数据框的列表 每个列表元素都有一个唯一的名称 结构类似于这个虚拟数据 a lt data frame z rnorm 20 y rnorm 20 b lt data frame z rnorm 30 y rnorm 30 c
  • 我如何创建带有下面文本视图的按钮网格

    Hi 我想创建一个像我 尝试 上面绘制的屏幕 A b c d e f g 和 h 是buttons p 是一个EditText 现在我想要完成的是 当部署在更大或更小的屏幕上或旋转时 会发生以下情况 元素 p 保持相同的高度 但水平尺寸 获
  • C# - 抛出异常时无限循环?

    我有以下代码 protected void ExecuteInTransaction Action action using SQLiteTransaction transaction connection BeginTransaction
  • 当另一个字段发生实际变化时,sql server触发器更新时间字段

    我需要一个触发器 如果 表行的一个或多个字段被更新 该触发器就会更新该行字段 假设您有一个雇员表 如下所示 EmployeeId Name Address ModificationDate 1 Spears 27 Sober Road 2