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