Non puoi trasformare una colonna esistente in una colonna identità reale, ma puoi ottenere un comportamento simile usando una sequenza come impostazione predefinita per la colonna.
create sequence seq_tmp_identity_id
start with 4
increment by 1;
Quindi usa:
alter table tmp_identity
modify id
default seq_tmp_identity_id.nextval;
per fare in modo che la colonna utilizzi la sequenza come valore predefinito. Se vuoi puoi usare default on null
per sovrascrivere un esplicito null
valore fornito durante l'inserimento (questo è il più vicino possibile a una colonna di identità)
Se vuoi un vero colonna identità dovrai eliminare l'attuale id
colonna e quindi aggiungerla nuovamente come colonna identità:
alter table tmp_identity drop column id;
alter table tmp_identity
add id number(38)
generated always as identity;
Nota che non dovresti aggiungere start with 4
in questo caso in modo che tutte le righe ottengano un nuovo numero univoco