我希望创建一个触发器,只要添加DATE_END,就会在表格中添加DATE_BEGIN和DATE_END之间的差异。
例如,假设我有一个包含以下列的表
ProjectName,Type,DATE_BEGIN,DATE_END,DATE_DIFF
我想要在更新DATE_END后立即使用DATE_BEGIN和DATE_END之间的差异自动填充DATE_DIFF。所以我确定我正在寻找在发生UPDATE时执行某些操作的触发器,但是如何以这种方式跟踪该特定列?
我对触发器有点新意,所以我不知道从哪里开始......
答案 0 :(得分:1)
您确认:
您必须从INSERTED(新值)和DELETED(旧值)获取DATE_END 并且只要它们不同,您就更新DATE_DIFF
IF ((SELECT DATE_END FROM INSERTED) <> (SELECT DATE_END FROM DELETED))
BEGIN ...
答案 1 :(得分:1)
为什么不使用计算列?
这样的事情:
alter table TableName drop column DATE_DIFF
alter table TableName add DATE_DIFF as (case when DATE_END is not null then datediff(day, DATE_BEGIN, DATE_END) else null end)
如果您不希望天数存在差异,请在调用函数datediff()
中选择其他内容。