Если вы создали уникальный ключ для вашей таблицы в Oracle и вам требуется его изменить, то сделать это проще всего удалением старого уникального ключа и созданием нового. Здесь вас может подстерегать одна небольшая неприятность.
Допустим, вы создавали уникальный ключ такой
DDL командой:
ALTER TABLE TABLE_1
ADD CONSTRAINT TABLE_1_UK
UNIQUE (ID_1,ID_2);
Затем вам потребовалось включить в уникальный ключ еще один атрибут таблицы. Удаляем существующий уникальный ключ:
ALTER TABLE TABLE_1
DROP CONSTRAINT TABLE_1_UK;
Затем создаем новый:
ALTER TABLE TABLE_1
ADD CONSTRAINT TABLE_1_UK
UNIQUE (ID_1,ID_2,ID_3);
и получаем ошибку ORA-00955: имя уже задействовано для существующего объекта.
С непривычки можно поломать голову, в чем же здесь дело, ведь мы уже удалили первичный ключ с именем TABLE_1_UK.
А дело здесь в том, что при создании уникального ключа автоматически создается индекс с таким же именем, как и уникального ключа. При попытке снова создать уникальный ключ с именем TABLE_1_UK производится попытка автоматически создать индекс с именем TABLE_1_UK, а такой индекс уже существует, и создан он был вместе с созданием первого в нашем примере уникального ключа.
Соответственно, чтобы правильно пересоздать
уникальный ключ таблицы
Oracle необходимо после удаления уникального ключа удалить и связанный с ним индекс:
ALTER TABLE TABLE_1
DROP CONSTRAINT TABLE_1_UK;
DROP INDEX TABLE_1_UK;
Смотрите также:
Оставьте свой комментарий
Вы должны быть авторизированны, чтобы оставить комментарий.