Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle 12c:Bagaimana saya bisa mengubah kolom kunci utama yang ada menjadi kolom identitas?

Anda tidak dapat mengubah kolom yang ada menjadi kolom identitas asli, tetapi Anda bisa mendapatkan perilaku serupa dengan menggunakan urutan sebagai default untuk kolom.

create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

Kemudian gunakan:

alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

untuk membuat kolom menggunakan urutan sebagai nilai default. Jika mau, Anda dapat menggunakan default on null untuk menimpa null explicit eksplisit nilai yang diberikan selama penyisipan (ini sedekat mungkin dengan kolom identitas)

Jika Anda ingin yang nyata kolom identitas Anda harus membuang id saat ini kolom dan kemudian tambahkan kembali sebagai kolom identitas:

alter table tmp_identity drop column id;

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

Perhatikan bahwa Anda tidak boleh menambahkan start with 4 dalam hal ini agar semua baris mendapatkan nomor unik baru



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan masalah aneh dengan fungsi TO_NUMBER di Oracle

  2. Saya mendapatkan kesalahan ORA-01775:perulangan rantai sinonim saat saya menggunakan sqlldr

  3. Bagaimana membatasi baris di mana SUM kolom sama dengan nilai tertentu di Oracle

  4. Cara memodifikasi tipe data di Oracle dengan baris yang ada di tabel

  5. Perbedaan Antara Stempel Waktu dalam Milidetik di Oracle