web-dev-qa-db-ja.com

行がすでに存在する場合に値を更新します

スキーマ「USER」にテーブル「A」があります。このテーブルには3つの列があります。以下は列の名前です。

  • id(主キー)
  • 名前
  • 年齢

このテーブルに行を挿入したいのですが、行が(同じIDで)既に存在する場合は、エラーsqlcode -803を表示する代わりに、名前と経過時間を更新する必要があります。

これを単一のクエリで行う方法はありますか?

2
Govind

質問のコメントで述べたように、 MERGE はあなたが探している答えです。

この素晴らしいブログもチェックしてください:

MERGEステートメントの説明 はSerge Rielau(瑞赛奇)とRick Swagermanによるものです。

あなたの場合、それは次のようになります:

MERGE INTO <tab> AS ...
  WHEN MATCHED THEN
     UPDATE ...
  WHEN NOT MATCHED THEN
     INSERT...
3