我想将记录从一张表复制到另一张表。在这样做时,我想设置我复制的那些记录的标志。
这就是我要做的(简化):
BEGIN TRANSACTION copyTran
insert into destination_table (name)
select top 100 name
from source_table WITH (TABLOCKX)
order by id
update source_table
set copy_flag = 1
where id in (select top 100 id from source_table order by id)
COMMIT TRANSACTION copyTran
有没有更简单的方法?
最佳答案
通过利用 OUTPUT
子句,您可以将其归结为单个 UPDATE
语句
UPDATE source_table
SET copy_flag = 1
OUTPUT inserted.name
INTO destination_table(name)
WHERE id IN
(
SELECT TOP 100 id
FROM source_table
ORDER BY id
)
注意: 现在测试。应该工作得很好。
关于sql - 复制记录时更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20395829/