Hvis jeg forstår dig rigtigt, forventer du, at Oracle ignorerer gamle duplikerede værdier og kun tillader nye værdier, når de opfylder begrænsningen. Fejlen returneres, fordi når du tilføjer en UNIQUE
begrænsning opretter Oracle et unikt indeks på kolonnen for at kontrollere værdierne, men din tabel har allerede duplikerede værdier, så den mislykkes. Jeg ville først oprette det ikke-unikke indeks og derefter tilføje begrænsningen, så det bruger dit eksisterende ikke-unikke indeks i stedet for automatisk at oprette det unikke indeks, som ville mislykkes:
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;