我有一个表将保存待处理的数据,这些数据将更新同一服务器上的另一个表。这个挂起的表从另一个服务器存储过程中获取数据。一旦数据在此挂起的表中,存储过程将尝试基于挂起表中的 tinyint 列进行插入、更新或删除。
除非需要发生某些事情,否则此待处理表将保持为空。在过程结束时,我们从这个挂起的表中删除。
如果需要更新的同一记录在过程运行时从另一台服务器插入两次,则会出现问题。最后,这两条记录都将被清除。我试图通过在待处理表中添加增量 id 来解决这个问题,但我无法在插入中输出 id:
insert into config.table (col1, col2, col3)
output inserted.col3, pendingId into @table
select p.col1, p.col2, p.col3
from pendingTable p
left join config.table t on p.col1 = t.col1
where t.col1 is null
我在 pendingId 上遇到错误。我计划使用@table 变量从挂起中删除,以避免删除未触及的记录(在程序运行时添加的新插入记录)。
delete p
from pendingTable p
inner join @table t on p.pendingId = t.pendingId and p.col3 = t.col3