- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ROWNUMでUPDATEをしたいのですが・・・。)
SQL初心者がROWNUMを使用したUPDATE文で一意制約違反が発生する問題
このQ&Aのポイント
- SQL初心者が、テーブルの一意制約違反が発生する問題に直面しています。
- 現在、ROWNUMを使用してNUMBERを更新しようとしているが、一意制約違反が発生してしまう。
- この問題を解決するためには、UPDATE文の条件を見直す必要がある。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ROWNUMを使った更新は不可能ではありません。 更新で使用しているサブクエリが、更新すべき値を1コ見つけてくるSQLであれば 正しく処理できます。 NUMBERカラムの再採番が目的だと思うので、 update M_PATTERN X set X.NUMBER= ( select count(*) + 1 from M_PATTERN Y where X.ESTAB=Y.ESTAB and X.PATTERN=Y.PATTERN and Y.NUMBER<X.NUMBER ) where X.ESTAB='1' and X.PATTERN='00'; な感じで、ROWNUMを使わない解決が良いと思います。
お礼
回答ありがとうございます。 ご推察の通り、再採番がしたかったんです。 確かに、それを目的とするならこちらの方がSQLがすっきりしていて、わかりやすいですね。 実行させたところ、意図した更新が出来ました。 ありがとうございました。