假设我有一个光标,可以找到要更新的数据,
declare @index int;
declare cursor1 cursor for
select table1_index from table where (table1_date < dateadd(dd, -365, getdate()))
open cursor1
fetch next from cursor1 into @index
while @@fetch_status = 0
begin
update table1
set table1_field = SOMETHING
where table1_index = @index
if @ERROR = 0
insert into audit_trail
values(getdate(), table1_index)
fetch next from cursor1 into @index
end
close cursor1
deallocate cursor1
以上代码位于存储过程中,每天由调度程序运行(例如每天凌晨12:00)。
我的问题是,如果调度程序运行存储的专业版。在一段时间内(例如,17/06/2017 12:00),仍然在运行(例如在17/06/2017 05:00 PM)。
如果我运行完全相同的代码(例如17/06/2017 03:00 PM), 光标会从更新的表格中选出数据吗?或者表中没有由调度程序更新的数据?
非常感谢。
答案 0 :(得分:1)
declare cursor1 cursor for
select table1_index from table where (table1_date < dateadd(dd, -365, getdate()))
and table1_index NOT IN (SELECT table1_index FROM audit_trail)
您需要添加条件and table1_index NOT IN (SELECT table1_index FROM audit_trail)
。我希望它对你有用。