Nếu tôi hiểu chính xác, bạn mong rằng Oracle sẽ bỏ qua các giá trị cũ trùng lặp và chỉ cho phép các giá trị mới khi chúng thỏa mãn ràng buộc. Lỗi được trả về vì khi bạn thêm UNIQUE
ràng buộc, Oracle tạo chỉ mục duy nhất trên cột để kiểm tra các giá trị, nhưng bảng của bạn đã có các giá trị trùng lặp, vì vậy nó không thành công. Tôi sẽ tạo chỉ mục không duy nhất trước, sau đó thêm ràng buộc để nó sử dụng chỉ mục không phải duy nhất hiện có của bạn thay vì tự động tạo chỉ mục duy nhất sẽ không thành công:
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;