sql >> Database teknologi >  >> RDS >> Oracle

Oracle 12c:Hvordan kan jeg ændre en eksisterende primær nøglekolonne til en identitetskolonne?

Du kan ikke omdanne en eksisterende kolonne til en ægte identitetskolonne, men du kan få en lignende adfærd ved at bruge en sekvens som standard for kolonnen.

create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

Brug derefter:

alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

for at få kolonnen til at bruge sekvensen som standardværdi. Hvis du vil, kan du bruge default on null at overskrive en eksplicit null værdi leveret under indsættelse (dette er så tæt som du kan komme på en identitetskolonne)

Hvis du vil have en rigtig identitetskolonnen skal du slette det aktuelle id kolonne og derefter tilføje den igen som en identitetskolonne:

alter table tmp_identity drop column id;

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

Bemærk, at du ikke skal tilføje start with 4 i dette tilfælde, så alle rækker får et nyt unikt nummer



  1. MySQL REGEXP - Fjernelse af mellemrum og ikke-numeriske tegn

  2. Sådan tvinges PHP til at læse nye linjer og returnerer som

  3. MySql og Delphi direkte forbindelse

  4. Optimering af flere sammenføjninger