Trigger中如何获得更新前的数据

slex1234 2010-05-14 10:27:05
现在有表A,包括字段C1、C2
在应用程序UI上,只要点击更新按钮,就会执行Update A Set C1= ,C2=
无论C1、C2的值是否该表了

我现在想在Trigger中判断C1、C2的值是否变化了,怎么取得更新前的数据?
...全文
269 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
slex1234 2010-05-14
  • 打赏
  • 举报
回复
感谢各位
分少勿怪
sql_sf 2010-05-14
  • 打赏
  • 举报
回复
inserted表:用来存储INSERT和UPDATE语句所影响的行的副本。意思就是在inserted表中临时保存了被插入或被更新后的记录行。在执行 INSERT 或UPDATE 语句时,新加行被同时添加到inserted表和触发器表中。因此,可以从inserted表检查插入的数据是否满足需求,如不满足则回滚撤消操(cāo)作。


deleted表:用来存储DELETE和UPDATE语句所影响行的副本。意思是在delete表中临时保存了被删除或被更新前的记录行。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传到deleted表中。所以可以从deleted表中检查删除的数据行是否能删除。


所以当表中某条记录的某项值发生变化时,变化前的值已经通过系统自动创建的临时表deleted表和inserted表保存了被删除行或插入的记录行的副本。我们可以从这两个表中查询出变化前的值并赋给变量。

我给你个表对应一下这两临时表的功能:

修改操作 inserted表 deleted表
增加(INSERT)记录时 存放新增的记录 不记录
删除(DELETE)时 不记录 存放被删除的记录
修改(UPDATE)时 存放用来更新的记录 存放更新前的记录

更新前的值可以从deleted表中查询出来,直接:select * from deleted
htl258_Tony 2010-05-14
  • 打赏
  • 举报
回复
更新前的数据在Trigger中的 Deleted 逻辑表
幸运的意外 2010-05-14
  • 打赏
  • 举报
回复
表中的值就是更新前的值,特殊表inserted表里是将要更新的信数据.比较两个表中相应字段就可以知道是不是更新值了.
永生天地 2010-05-14
  • 打赏
  • 举报
回复
deleted里是修改前的
tbb_520 2010-05-14
  • 打赏
  • 举报
回复
delete表啊
SQL77 2010-05-14
  • 打赏
  • 举报
回复
DELETEd表就是更新前的数据

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧