记录 数据的更新时间的触发器如何写?

hicksys 2005-10-13 06:26:43
问一个简单,但对我来说是很难的问题:
一个表,有一个字段用来记录该条记录的最后更新时间,当该记录被更新的时候,就同步更新修改的时间,

这样的触发器如何写?
谢谢大家
...全文
178 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgsasd311 2005-10-13
  • 打赏
  • 举报
回复
create trigger tr_tb on TB
for update,insert
as
ALTER TABLE TB DISABLE TRIGGER tr_tb--防止触发器递归
update a set datecolumn=getdate() from TB
a join inserted b on a.keycolumn=b.keycolumn
ALTER TABLE TB enable TRIGGER tr_tb--还原
wushimiang12 2005-10-13
  • 打赏
  • 举报
回复
同意 MorningTea(一勺抹茶) 的做法!
vivianfdlpw 2005-10-13
  • 打赏
  • 举报
回复
--禁止触发器递归
exec sp_configure 'nested triggers','0'
reconfigure with override
go

--创建触发器
create trigger tr
on 表
for update,insert
as
update t
set 日期字段=getdate()
from 表 t
join inserted I on t.唯一列=b.唯一列
MorningTea 2005-10-13
  • 打赏
  • 举报
回复
update本表触发本表,修改本表,又触发!

我想 zheninchangjiang(我爱燕子)的不行!

如果楼主非要用,必须判定update 的字段:
在触发器里面判断:
if update(字段){
...->执行修改最后更新时间
}


MorningTea 2005-10-13
  • 打赏
  • 举报
回复
一个表,有一个字段用来记录该条记录的最后更新时间,当该记录被更新的时候,就同步更新修改的时间,

---〉这样不用trigger,每次修改,不管修改什么,都同时set 最后更新时间 = getdate()即可!

如果是写一个对本表触发,这样会造成一个多重出发,死循环
因为你修改最后更新时间不也是修改本记录吗,这样又会触发,这样就是死循环
zheninchangjiang 2005-10-13
  • 打赏
  • 举报
回复
假设该表存在有键列keycolumn
create trigger trigger_name on tablename
for update,insert
as
update a set datecolumn=getdate() from tablename a join inserted b on a.keycolumn=b.keycolumn
zheninchangjiang 2005-10-13
  • 打赏
  • 举报
回复
递归嵌套,最多是32层,默认情况下递归是处于off状态,insert 触发的UPdate还是会触发update触发器。建议在将那列的默认值设为getdate(),这样只要做update触发器就行了

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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