1

我正在寻找一个触发器,一旦添加了 DATE_END,它就会在表中添加 DATE_BEGIN 和 DATE_END 之间的差异。

例如,假设我有一个包含以下列的表格

ProjectName,Type,DATE_BEGIN,DATE_END,DATE_DIFF

我希望 DATE_DIFF 在 DATE_END 更新后立即自动填充 DATE_BEGIN 和 DATE_END 之间的差异。所以我确定我正在寻找一个在发生 UPDATE 时执行某些操作的触发器,但是我如何以这种方式跟踪该特定列?

我对触发器有点陌生,所以我不知道从哪里开始......

4

2 回答 2

1

您验证:

您必须从 INSERTED (NEW VALUE) 和 DELETED (OLD VALUE) 获取 DATE_END,并且只要它们不同,您就可以更新 DATE_DIFF

IF ((SELECT DATE_END FROM INSERTED) <> (SELECT DATE_END FROM DELETED))

开始 ...

文档:使用插入和删除的表

于 2013-10-25T17:35:58.063 回答
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()

于 2013-10-25T17:38:29.383 回答