Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle 12c:Jak zmienić istniejącą kolumnę klucza podstawowego na kolumnę tożsamości?

Nie można przekształcić istniejącej kolumny w kolumnę rzeczywistej tożsamości, ale można uzyskać podobne zachowanie, używając sekwencji jako domyślnej dla kolumny.

create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

Następnie użyj:

alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

aby kolumna używała sekwencji jako wartości domyślnej. Jeśli chcesz, możesz użyć default on null nadpisać jawny null wartość podana podczas wstawiania (jest tak blisko, jak tylko można dostać się do kolumny tożsamości)

Jeśli chcesz prawdziwego kolumna tożsamości, musisz usunąć bieżący id kolumnę, a następnie dodaj ją ponownie jako kolumnę tożsamości:

alter table tmp_identity drop column id;

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

Pamiętaj, że nie powinieneś dodawać start with 4 w tym przypadku, aby wszystkie wiersze otrzymały nowy unikalny numer



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klient Oracle wymaga nawiasów wokół nazw kolumn?

  2. Nieokreślony błąd podczas wykonywania skryptu vba

  3. Dostęp do drugiego elementu w kolumnie varray

  4. ORA-06502:PL/SQL:błąd liczbowy lub wartości:zbyt mały bufor ciągu znaków

  5. Najszybszy sposób na obliczenie hash całej tabeli