MERGEについて
はてブ見てたら、SQLのMERGE文の記事について言及されていた。
でもこれって同一テーブルに対してできるんかなぁ。。
ってことなのでちょっとコードにしてみる。
ここの方法と同じだけども、確かこんな感じで。
CREATE TABLE User (
UserNo number(10,0) primary key,
Name text,
Age number(3,0)
);
というテーブルがあったとしたら、
MERGE INTO User U
USING (
SELECT
? UserNO,
? Name,
? Age
FROM DUAL
) TMP
ON (
U.UserNO=TMP.UserNO
)
WHEN MATCHED THEN
UPDATE SET
U.Name = TMP.Name,
U.Age = TMP.Age
)
WHEN NOT MATCHED THEN
INSERT (
UserNo,
Name,
Age
) VALUES (
TMP.UserNo,
TMP.Name,
TMP.Age
);
UserNoがあれば更新、なければ追加です。 あと、? はバインドさせて適当な値を設定することを想定しています。
で、
「マージ」って意味合いの使い方じゃないしなぁ。。
この方法が正しいか否かだけども、UPSERT!と言うぐらいだし多分いいような気がする。 (ここ最近はOracle触ってないのでちょっと自信がないけども)