我的Tasks
表格带有duration
列。我想创建一个部署后脚本,该脚本将该列的值递减1.
UPDATE Tasks SET duration = duration - 1
如何确保每次发布项目时脚本都不会运行,但只运行一次。有没有办法让SQL Server记住脚本之前已经运行过?
答案 0 :(得分:1)
部署后脚本旨在每次部署项目时执行。脚本应该是可重复的。您可以在脚本中实现自己的保护逻辑,以确保它仅在适当时运行。在这种情况下,您可以在单独的状态表中检查标记,以跟踪您是否已执行更新。例如:
-- Create a state table with a single row
create table deployment_script_state (duration_was_updated int);
insert into deployment_script_state values (0);
-- Perform the operation if the update hasn't been done
update t
set t.duration = t.duration - 1
from Tasks t
join deployment_script_state d
on d.duration_was_updated = 0
-- Set update flag to done
update deployment_script_state
set duration_was_updated = 1
答案 1 :(得分:0)
我实现它的方法是使用项目变量
举个例子:
IF '$(DeployJobs)' = 'true'
BEGIN
PRINT 'The Jobs will be deployed as the DeployJobs flag has been set'
......
END
这允许我控制使用部署变量,无论脚本是否运行