我尝试在使用触发器插入lunTot
列值后更新lunOut
列,但不知何故它没有更新。如果我使用Update
语句查询它运行良好。
插入触发器(不工作)后:
create trigger trg_AfterInsertLunTot
on lunTime
after insert
as
begin
update lunTime
set lunTot = DATEDIFF(minute, lunIn, lunOut)
from lunTime
end
go
使用Update
查询(正在工作)
update lunTime
set lunTot = DATEDIFF(minute, lunIn, lunOut)
from lunTime
答案 0 :(得分:2)
为什么不让lunTot
成为计算列?不需要使用触发器......
只需删除您现有的lunTot
列
ALTER TABLE dbo.lunTime
DROP COLUMN lunTot
然后再将其定义为计算列:
ALTER TABLE lunTime
ADD lunTot = DATEDIFF(minute, lunIn, lunOut)
现在,您的专栏lunTot
总是反映lunIn
和lunOut
之间的差异 - 对于所有现有行,并且在您插入新行后自动生成。