Oracleでは以前から提供されていましたが、SQL Serverでも2008からMERGEステートメントが使えるようになります。MERGEステートメントではキー項目で比較し、一致する場合と一致しない場合でそれぞれ異なる処理を行えます。
例えば、リスト1のようなSQL文を実行することで、図1のTable1、Table2をマージできます。
MERGE Table1
Using Table2
On (Table1.Col1 = Table2.Col3)
When Matched Then
Update Set Table1.Col2 = Table2.Col4 -----(1)
When Not Matched Then
INSERT (Table1.Col1, Table1.Col2) Values (Table2.Col3, Table2.Col4); ----(2)
リスト1では、Table1のCol1列とTable2のCol3列を比較し、一致する場合はTable1のCol2列をTable2のCol4列に変更し(1)、Table2にしかないレコードはTable1に追加します(2) 。
従来であれば、例えば更新処理が多いケースではまず更新を行い、更新件数が0件であれば追加する、というロジックをアプリケーション側で逐一実装していました。
SQL Server 2008で実装されるこのMERGEステートメントを利用すれば、同様の処理を1つのSQL文で実現できるようになります。結果として、開発やテストフェイズでの作業負荷の軽減が期待できます。
Visual StudioではおなじみのインテリセンスがSQL Server 2008のManagement Studioで使用できるようになりました。インテリセンスはSQL文作成中に、次に入力すべきキーワードの候補を表示し、クエリ作成を支援する機能です。
例えば、サンプルデータベースである「AdventureWorks」データベースに対して、Management Studioの「クエリエディタ」より次のクエリを作成するとします。
SELECT ProductID, Name, ProductNumber FROM AdventureWorks.Production.Product
まず「SELECT ProductID, Name, ProductNumber FROM AdventureWorks」と入力します。その後に「.」(ドット)を入力すると、入力可能な候補一覧が表示されます。
Visual Studioでのアプリケーション開発と同様、表示された候補から選択するか、あるいはさらに入力を続けて候補を絞り込むこともできるため、単純なタイプミスや文法エラーがすぐに分かり、入力負荷の軽減が図れます。派手さはありませんが、実用的な改善です。
Copyright © ITmedia, Inc. All Rights Reserved.