8

代理自動番号キーを追加するには、数千のレコードを持つOracle10gDBの既存のテーブルを変更する必要があります。私の頭に浮かぶ1つの方法は

  1. 新しいシーケンスを作成する
  2. ID列を作成し、null値を許可します
  3. シーケンスでid列を更新する
  4. テーブルを変更して、新しいID列に「notnull」と「primarykey」を追加します

これを行うためのより簡単またはより効率的な方法はありますか(またはこれが機能しない理由がありますか)?

4

1 に答える 1

8

私はそれを次のようにします:

  1. idnull値を許可して、列を作成します

  2. このクエリを発行します。

    UPDATE  mytable
    SET     id = rownum
    
  3. 追加するテーブルとNOT NULL新しいPRIMARY KEYID列を変更する

  4. シーケンスを作成し、シードしてMAX(id) + 1、以降の挿入に使用します。

于 2010-02-18T09:18:19.573 に答える