Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle 12c:Làm cách nào để sửa đổi cột khóa chính hiện có thành cột nhận dạng?

Bạn không thể biến cột hiện có thành cột nhận dạng thực, nhưng bạn có thể nhận được hành vi tương tự bằng cách sử dụng một chuỗi làm mặc định cho cột.

create sequence seq_tmp_identity_id
  start with 4
  increment by 1;

Sau đó sử dụng:

alter table tmp_identity 
   modify id 
   default seq_tmp_identity_id.nextval;

để làm cho cột sử dụng trình tự làm giá trị mặc định. Nếu muốn, bạn có thể sử dụng default on null để ghi đè một null rõ ràng giá trị được cung cấp trong khi chèn (giá trị này càng gần càng tốt với cột nhận dạng)

Nếu bạn muốn một thực cột nhận dạng bạn sẽ cần bỏ id hiện tại và sau đó thêm lại nó làm cột nhận dạng:

alter table tmp_identity drop column id;

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

Lưu ý rằng bạn không nên thêm start with 4 trong trường hợp này để tất cả các hàng nhận được một số duy nhất mới



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi phải viết một truy vấn rất thú vị để tính toán các giá trị rỗng và các hàng có giá trị

  2. Kết nối chuỗi tổng hợp trong Oracle 10g

  3. NHibernate Oracle - Không thể tải DLL 'OraOps10w.dll'

  4. ORA xóa / cắt ngắn

  5. Có cách nào để thêm cột tại một vị trí được chỉ định trong bảng Oracle không?