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