Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle 12c:Como posso modificar uma coluna de chave primária existente para uma coluna de identidade?


Você não pode transformar uma coluna existente em uma coluna de identidade real, mas pode obter um comportamento semelhante usando uma sequência como padrão para a coluna.
create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

Então use:
alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

para fazer com que a coluna use a sequência como valor padrão. Se você quiser, pode usar default on null para substituir um null explícito valor fornecido durante a inserção (isso é o mais próximo que você pode obter de uma coluna de identidade)

Se você quer um real coluna de identidade, você precisará descartar o id atual coluna e, em seguida, adicione-a novamente como uma coluna de identidade:
alter table tmp_identity drop column id;

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

Observe que você não deve adicionar o start with 4 neste caso, para que todas as linhas recebam um novo número exclusivo