有人向我解释MERGE
的用途是什么?
MERGE Dev.dbo.ProductTypeGroup AS target
USING (
SELECT * FROM Staging.dbo.ProductTypeGroup
) AS src
ON
target.ProductTypeGroupId = src.ProductTypeGroupId
答案 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
)。