Не можете удалить ограничение для таблицы в Oracle 11g? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть база данных Oracle 11g.Итак, в прошлом я использовал uniq-ограничение для таблицы User по имени и фамилии, поэтому моя таблица была

id     name    surname     age    position

и ограничение:

alter table User add constraint UK8ut91db3xdtls2x61e63iwym4 unique (name, surname);

Но теперь мне нужноуберите это ограничение, чтобы имя и фамилия не были уникальными.Я удаляю это ограничение по сценарию из базы:

  alter table ORGANIZATION.USER drop constraint UK8UT91DB3XDTLS2X61E63IWYM4

, и это ограничение удаляется:

SELECT * FROM all_constraints WHERE CONSTRAINT_NAME='UK8UT91DB3XDTLS2X61E63IWYM4'

последний скрипт ничего не возвращает.

Но, если я пытаюсь вставитьпара строк с одинаковыми именем и фамилией, но с разными идентификаторами - есть ошибка

INSERT INTO ORGANIZATION.USER(id, name, surname, age, position) VALUES (111-222, 'Natalia', 'Solzhenizina', 22, 'consultant')
Error report -
ORA-00001: нарушено ограничение уникальности  (constraint violetion on unique) (SBDATASVCS.UK8UT91DB3XDTLS2X61E63IWYM4) 

1 Ответ

0 голосов
/ 16 февраля 2019

Во-первых, правильный способ удаления ограничения:

alter table ORGANIZATION.USER drop constraint UK8UT91DB3XDTLS2X61E63IWYM4 CASCADE

Если вы забыли использовать его, некоторые другие элементы ограничения могут остаться в живых (уникальный или индексный)

При желании вы можетеможет сбросить уникальное с тем же именем и индекс .

DROP INDEX ORGANIZATION.UK8UT91DB3XDTLS2X61E63IWYM4

alter table ORGANIZATION.USER drop UNIQUE (name, surname);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...