Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle 12c:Как мога да променя съществуваща колона с първичен ключ в колона за самоличност?

Не можете да превърнете съществуваща колона в истинска колона за идентичност, но можете да получите подобно поведение, като използвате последователност като по подразбиране за колоната.

create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

След това използвайте:

alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

за да накарате колоната да използва последователността като стойност по подразбиране. Ако искате, можете да използвате default on null за презаписване на изричен null стойност, предоставена по време на вмъкване (това е възможно най-близо до колона за самоличност)

Ако желаете истинска колона за идентичност ще трябва да премахнете текущия id и след това го добавете отново като колона за самоличност:

alter table tmp_identity drop column id;

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

Имайте предвид, че не трябва да добавяте start with 4 в този случай, така че всички редове да получат нов уникален номер



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изпратя произволни параметри към тригера на Oracle?

  2. Как да използвам името на дяла като параметър в командата за избор?

  3. Защо типът данни Long е заменен с LOB в Oracle?

  4. Параметризирана заявка на Oracle в c#

  5. Как да имаме комбинация от първичен ключ, която може да има нулеви стойности?