sql >> データベース >  >> RDS >> Oracle

Oracle 12c:既存の主キー列をID列に変更するにはどうすればよいですか?

    既存の列を実際のID列に変換することはできませんが、列のデフォルトとしてシーケンスを使用することで、同様の動作を得ることができます。

    create sequence seq_tmp_identity_id
      start with 4
      increment by 1;
    

    次に、以下を使用します:

    alter table tmp_identity 
       modify id 
       default seq_tmp_identity_id.nextval;
    

    列がデフォルト値としてシーケンスを使用するようにします。必要に応じて、default on nullを使用できます 明示的なnullを上書きする 挿入時に指定された値(これは、ID列にできるだけ近い値です)

    本物が必要な場合 現在のidを削除する必要があるID列 列を作成してから、ID列として再度追加します:

    alter table tmp_identity drop column id;
    
    alter table tmp_identity 
         add id number(38) 
         generated always as identity;
    

    start with 4を追加しないでください。 この場合、すべての行が新しい一意の番号を取得するようにします



    1. 複数のスレッドを使用してファイルを書き込む

    2. 数字を文字列パラメータとして持つSoundex

    3. Oracleでカンマ区切りの文字列を分割できない

    4. Persistence.createEntityManagerFactory()が戻るまでに非常に長い時間がかかります