sql >> Databasteknik >  >> RDS >> Oracle

Oracle 12c:Hur kan jag ändra en befintlig primärnyckelkolumn till en identitetskolumn?

Du kan inte förvandla en befintlig kolumn till en riktig identitetskolumn, men du kan få ett liknande beteende genom att använda en sekvens som standard för kolumnen.

create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

Använd sedan:

alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

för att få kolumnen att använda sekvensen som standardvärde. Om du vill kan du använda default on null för att skriva över en explicit null värde som angavs under infogning (detta är så nära en identitetskolumn du kan komma)

Om du vill ha en riktig identitetskolumnen måste du ta bort det aktuella id och lägg sedan till den igen som en identitetskolumn:

alter table tmp_identity drop column id;

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

Observera att du inte ska lägga till start with 4 i detta fall så att alla rader får ett nytt unikt nummer



  1. MySQL-sats för att välja den senaste posten i en specifik kolumn

  2. Hur man formaterar siffror i PostgreSQL

  3. Hur man hittar en användares standardspråk i SQL Server (T-SQL)

  4. Skapa en sammansatt främmande nyckel i SQL Server 2008