さわらブログ

さわら(@xhiroga)の技術ブログ

【備忘録】DB2における「表の参照が必要なんだけど内容はどうでもいい」の書き方

SQLのMERGE句で、対象のテーブルと比較するデータソースをプログラムの変数として渡す場合って、
USING句の中身が不要になると思います。

例:任意の従業員の給料を30万円にする。その従業員が見つからない場合、新たにレコードを追加する。


MERGE EMPLOYEE
USING (不要)
ON EMP_ID = ?
WHEN MATCHED THEN UPDATE SET EMP_SALARY = '300000'
WHEN NOT MATCHED THEN INSERT (EMP_ID, EMP_SALARY) VALUES (?, '300000')

こうした場合の書き方を先輩から習ったので備忘録に。

MERGE EMPLOYEE
USING SYSIBM.SYSDUMMY1
ON EMP_ID = ?
WHEN MATCHED THEN UPDATE SET EMP_SALARY = '300000'
WHEN NOT MATCHED THEN INSERT (EMP_ID, EMP_SALARY) VALUES (?, '300000')

SYSIBM.SYSDUMMY1は必ず1行のレコードが入ったテーブルで、こうした参照が必要な場合に使われているようです。