- PR -

MERGE文の使い方について

1
投稿者投稿内容
ryoichi
常連さん
会議室デビュー日: 2003/09/12
投稿数: 30
投稿日時: 2006-07-28 12:36
参照元記事「IF文のネスト地獄から抜け出せるMERGE文」の「データをそのまま使う」
のサンプルSQLでは
http://www.atmarkit.co.jp/fdb/rensai/sqlclinic11/sqlclinic11_2.html#4
EMP表にEMPNO=9999のレコードが存在しなかったらINSERT、
存在したらUPDATEという意図で書かれているのか?と思うのですが、
EMPNO=9999のレコードが存在しなかった場合、結果セットは行を戻さないので、
when matchedもwhen not matchedも動作せず、よって、
update emp set job = 'Cons', mgr = '9999', sal = 20 where empno = 9999
で等価なSQLとなると思うのですが、その認識って正しいでしょうか?
それとも、その他の条件、その他のレコードの関係で、何か動作が異なるので
しょうか?

[ メッセージ編集済み 編集者: ryoichi 編集日時 2006-07-28 12:37 ]
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-07-28 12:59
>update emp set job = 'Cons', mgr = '9999', sal = 20 where empno = 9999
>で等価なSQLとなると思うのですが、その認識って正しいでしょうか?

その通りだと思います。

merge into scott.emp e
using (select いろいろ from dual) u
にしないとダメだと思いますね

1

スキルアップ/キャリアアップ(JOB@IT)