私が正しく理解していれば、Oracleは古い重複値を無視し、制約を満たしている場合にのみ新しい値を許可することを期待しています。 UNIQUE
を追加すると、エラーが返されます。 制約により、Oracleは値をチェックするために列に一意のインデックスを作成しますが、テーブルにはすでに重複する値があるため、失敗します。最初に非一意のインデックスを作成し、次に制約を追加して、失敗する一意のインデックスを自動的に作成するのではなく、既存の非一意のインデックスを使用するようにします。
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;