2011-12-10 5 views
-5

誰でも私に説明してくださいMERGEの使用は何ですか?SQL ServerでIDENTITY_INSERTおよびMERGEとは何ですか?

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

これらは完全に別個の2つの質問であり、両方の回答はSQL Server Books Onlineで簡単に見つかります。 ['IDENTITY_INSERT'](http://msdn.microsoft.com/en-us/library/ms188059.aspx)、[' MERGE'](http://technet.microsoft.com/en-us/library/bb510625) .aspx) –

+4

あなたは研究努力をしていません...他の誰かがあなたのために完全にこの問題を解決するためにここにコードを貼り付けました。これはここでは何がうまくいかないか... FAQを参照してください – TheBoyan

答えて

4
SET IDENTITY_INSERT Dev.dbo.ProductTypeGroup ON 

これはあなたの代わりにあなたのためのID値を供給SQL Serverのに頼るので、ID列の値の挿入が許可されていることを意味します。

MERGEは、原子UPDATE/INSERTを実行するために使用される/いくつかの基準に基づいてDELETE(そうでなければ、前提条件のチェックをしながら、トランザクション内の行をロックする必要があります - いくつかのケースでは、パフォーマンスのために人を傷つけることができる)

あなたが投稿したステートメントは、データベースStagingのテーブルProductTypeGroupのすべての行をデータベースDevの同じテーブルに転送することです。このSQLの実行後、Dev.dbo.ProductTypeGroupは、ID値(したがって、IDENTITY_INSERTをオンにする必要性)を含めて、Staging.dbo.ProductTypeGroupとまったく同じ値を含みます。

+0

この回答を見つけた人は誰でも:質問は投稿後に編集されました。最初に、2つのテーブルの完全なマージを行って、より多くのコードがありました。 – driis

関連する問題