sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

Postgresで Insert Updateをするための関数を書いた

久しぶりにplpgsqlなんてものを使った。

くじの配送履歴テーブル用。

 

CREATE OR REPLACE FUNCTION func_merge_campaign_send_log(campaignno integer, mailaddr text, hashaddr text, multiplier integer) RETURNS VOID AS

$BODY$

BEGIN

  INSERT INTO campaign_send_log (campaign_no,mail_address,hashed_address,prize_multiplier) VALUES (campaignno,mailaddr,hashaddr,multiplier);

EXCEPTION WHEN unique_violation THEN

  UPDATE campaign_send_log SET mail_address = mailaddr, hashed_address = hashaddr, prize_multiplier = multiplier

   WHERE campaign_no = campaignno AND lower(mail_address) = lower(mailaddr);

END;

$BODY$

LANGUAGE plpgsql VOLATILE;

 
仮引数のスペルをミスしていた。そのままDBに流してテストOKとなり、アプリ側を実装し始めてミスに気づいたため、慌てて訂正。コピペは駄目ですね…