sql >> Databáze >  >> RDS >> Oracle

Oracle 12c:Jak mohu upravit stávající sloupec primárního klíče na sloupec identity?

Stávající sloupec nemůžete přeměnit na sloupec skutečné identity, ale můžete získat podobné chování, když jako výchozí pro sloupec použijete sekvenci.

create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

Poté použijte:

alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

aby sloupec používal sekvenci jako výchozí hodnotu. Pokud chcete, můžete použít default on null přepíše explicitní null hodnota zadaná během vkládání (toto je tak blízko, jak se můžete dostat ke sloupci identity)

Pokud chcete skutečný identity, budete muset vypustit aktuální id a poté jej znovu přidejte jako sloupec identity:

alter table tmp_identity drop column id;

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

Všimněte si, že byste neměli přidávat start with 4 v tomto případě tak, aby všechny řádky dostaly nové jedinečné číslo



  1. CHYBA COPY CSV Postgresql:další data za posledním očekávaným sloupcem

  2. MOD_REWRITE HELP!

  3. Nová tabulka pro každého uživatele?

  4. Přístup ke sloupcům tabulky podle indexu namísto názvu v uložené proceduře SQL Server