如何在MSSQL服务器中自动触发触发器(即每天)



这是我在SQL Server中的触发器。我希望这个触发器自动触发(即每天)而不是更新......

create trigger  trig_name
on tab_name
for update
as 
begin
declare   @id int,@innn int
declare @dif int
declare   @inn int
set @id=(select whateverid from inserted)
set @inn = (select DATEDIFF(DAY,INSERTDT,UPDATEDDT) from tab_name where whateverid=@id)
set @innn =(select DATEDIFF(DAY,INSERTDT,GETDATE()) from tab_name where whateverid=@id)
set @dif = @inn-@innn
 update tab_name set due=@dif from tab_name where whateverid= @id
end
创建新的 SQL

代理作业,并添加事务处理 SQL 步骤:

update tab_name 
set due = DATEDIFF(DAY, INSERTDT, UPDATEDDT) - DATEDIFF(DAY, INSERTDT, GETDATE())

显然,与触发器不同,您无法更新刚刚更新的触发器。 因此,这将根据其运行时间更新所有"到期"字段。

我会考虑创建一个存储的过程并让作业来运行它。 它更容易经理,并且将来不太可能被错过。

最新更新