필드에 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의 대답은 좋은 대답이지만 시스템 생성 이름을 가질 수있는 제약 조건이 제거 방법과 관련이 있다는 것이 보편적으로 사실이 아닐 수 있다는 것이 (오라클 전문 지식이 부족하여) 우려됩니다. 이름을 몰라도 제약. 해당 제약 조건을 논리적으로 삭제할 때 시스템 이름 제약 조건의 이름을 알지 않아도되는 방법이 항상 있다는 것이 사실입니까?