Als ik je goed begrijp, verwacht je dat Oracle oude dubbele waarden negeert en nieuwe waarden alleen toestaat als ze aan de beperking voldoen. De fout wordt geretourneerd omdat wanneer u een UNIQUE
. toevoegt beperking, maakt Oracle een unieke index op de kolom om de waarden te controleren, maar uw tabel heeft al dubbele waarden, dus het mislukt. Ik zou eerst de niet-unieke index maken en vervolgens de beperking toevoegen zodat deze uw bestaande niet-unieke index gebruikt in plaats van automatisch de unieke index te maken die zou mislukken:
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;