sql >> Databáze >  >> RDS >> Oracle

Název ORA-00955 již používá existující objekt

Možná existuje INDEX spojené s PRIMARY KEY CONSTRAINT a je také pojmenován jako PK_B .

Můžete to zkontrolovat jako :

SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';

Pokud je to pravda, udělejte to:

ALTER INDEX "PK_B" RENAME TO "PK_XYZ";

Aktualizace:týkající se ALTER INDEX prohlášení, pár důležitých bodů, jak je zmínil Justin v komentářích

Oracle implicitně vytváří UNIQUE index pro podporu PRIMARY KEY CONSTRAINT . Protože má index stejný název jako primární klíč, a nyní, když se primární klíč upravuje, je lepší zahodit a znovu vytvořit index podle definice starého primárního klíče.

Můj závěr:

  • Omezení primárního klíče je vynuceno prostřednictvím jedinečného indexu.
  • Pokud již Oracle najde index – jedinečný nebo nejedinečný – použije jej jako primární klíč.
  • Pokud byl index původně vytvořen jako nejedinečný, bude se nadále zobrazovat jako nejedinečný, ale ve skutečnosti se bude jednat o jedinečný index.

Dobrá ukázka a docela podrobná i o dalších aspektech, od Arup:Primární klíče zaručují jedinečnost? Zamyslete se znovu.



  1. Připravte testovací data na Oracle se sloupcem blob

  2. JDBC Metada získá informace o omezeních

  3. PHP - problém s vnořenou mysql_fetch_array() mě přivádí k šílenství

  4. Časový limit při získávání připojení po upgradu Knex