У меня есть база данных с ограничением NOT NULL для поля, и я хочу удалить это ограничение. Усложняющий фактор состоит в том, что это ограничение имеет системное имя, а имя этого ограничения различается между производственным сервером, сервером интеграции и различными базами данных разработчиков. Наш текущий процесс заключается в проверке сценариев изменений, а автоматическая задача выполняет соответствующие запросы через sqlplus к целевой базе данных, поэтому я бы предпочел решение, которое можно было бы просто отправить прямо в sqlplus.
В моей собственной базе данных SQL, чтобы удалить это, будет:
alter table MYTABLE drop constraint SYS_C0044566
Я вижу ограничение, когда запрашиваю all_constraints
представление:
select * from all_constraints where table_name = 'MYTABLE'
но я не знаю , как работать с SEARCH_CONDITION
-хLONG
типом данных или как лучше динамически удалять смотрел вверх ограничение даже после того, как я знаю его имя.
Итак, как я могу создать сценарий изменения, который может снять это ограничение в зависимости от того, что это такое, а не от его имени?
РЕДАКТИРОВАТЬ: ответ @Allan является хорошим, но я обеспокоен (из-за моего отсутствия опыта в Oracle), что не всегда верно, что любое ограничение, которое может иметь сгенерированное системой имя, будет связано с ним способом удаления ограничение, не зная его имени. Верно ли, что всегда будет способ избежать необходимости знать имя ограничения, названного системой, при логическом удалении этого ограничения?