我想将记录从一张表复制到另一张表。在这样做时,我想设置我复制的那些记录的标志。

这就是我要做的(简化):

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/

10-12 16:49
查看更多