Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

novalidar com erro ora-02299


Se entendi corretamente, você espera que o Oracle ignore valores duplicados antigos e permita novos valores somente quando eles satisfizerem a restrição. O erro é retornado porque quando você adiciona um UNIQUE restrição, o Oracle cria um índice exclusivo na coluna para verificar os valores, mas sua tabela já possui valores duplicados, então ela falha. Eu criaria o índice não exclusivo primeiro e, em seguida, adicionaria a restrição para que ele usasse seu índice não exclusivo existente em vez de criar automaticamente o índice exclusivo que falharia:
create index arc_ix on arc (name);

alter table arc add constraint arc_uq unique (name) enable novalidate;