什么是SQL Server中的IDENTITY_INSERT和MERGE?

时间:2011-12-10 11:18:59

标签: c# sql-server merge

有人向我解释MERGE的用途是什么?

MERGE Dev.dbo.ProductTypeGroup AS target
USING (
        SELECT * FROM Staging.dbo.ProductTypeGroup
    ) AS src
    ON 
        target.ProductTypeGroupId = src.ProductTypeGroupId

1 个答案:

答案 0 :(得分:4)

SET IDENTITY_INSERT Dev.dbo.ProductTypeGroup ON

这意味着您允许在标识列中插入值,而不是依赖于为您提供标识值的SQL Server。

MERGE用于根据某些条件执行原子UPDATE / INSERT / DELETE(否则你必须在检查前提条件时锁定事务中的行 - 这在某些情况下会对性能造成伤害)

您发布的完整语句是将数据库ProductTypeGroup上的表Staging中的所有行传输到数据库Dev中的同一个表。运行此SQL后,Dev.dbo.ProductTypeGroup将包含与Staging.dbo.ProductTypeGroup完全相同的内容,包括标识值(因此需要设置IDENTITY_INSERT)。