我正在尝试为表设置触发器以更新列“持续时间”,即该行的开始日期和结束日期之间的持续时间。但是,每当我插入/更新列时,触发器都不起作用,因为 SCOPE_INDENTITY() 一直返回 null。我怎样才能解决这个问题?
ALTER TRIGGER [dbo].[CalcDuration]
ON [dbo].[Event]
AFTER INSERT, UPDATE, DELETE
AS
DECLARE @STARTED datetime
DECLARE @FINISHED datetime
DECLARE @ID int
SELECT @ID = SCOPE_IDENTITY()
SELECT @STARTED = [Date & Time Started] FROM dbo.Event WHERE [Event ID] = @ID
SELECT @FINISHED = [Date & Time Finished] FROM dbo.Event WHERE [Event ID] = @ID
UPDATE dbo.Event
SET Duration = DATEDIFF ( hour, @STARTED, @FINISHED )
WHERE [Event ID] = @ID