반응형
Oracle - 테이블을 삭제하지 않고 테이블 제약 조건 삭제
대규모 Oracle 데이터베이스의 대량 마이그레이션을 수행하고 있습니다.이 작업의 첫 번째 단계는 나중에 테이블을 삭제하기 위한 준비로 테이블의 전체 로드 이름을 변경하는 것입니다. 하지만 현재는 테이블에 데이터를 보관해야 합니다.외부 키 제약 조건은 삭제해야 합니다. 해당 제약 조건은 데이터베이스의 나머지 부분에 연결해서는 안 됩니다.지금 삭제할 경우 구속조건을 캐스케이드할 수 있지만 이름을 변경하면 구속조건이 변경됩니다.
테이블 자체를 떨어뜨리지 않고 캐스케이드 제약 조건이 떨어지는 모든 제약 조건을 삭제할 수 있는 방법이 있습니까?
동적 SQL 및 데이터 사전을 사용하여 이 작업을 수행할 수 있습니다.
begin
for r in ( select table_name, constraint_name
from user_constraints
where constraint_type = 'R' )
loop
execute immediate 'alter table '|| r.table_name
||' drop constraint '|| r.constraint_name;
end loop;
end;
테이블이 두 명 이상의 사용자에 의해 소유된 경우 DBA_CONSTARGS에서 드라이브해야 하며 투영 및 실행 문에 OWNER를 포함해야 합니다.모든 테이블보다 적게 터치하려면 이름에 패턴이 없는 한 WHERE 절에 목록을 지정해야 합니다.
제약 조건을 삭제하지 않고 사용하거나 다시 사용하도록 설정할 수 있습니다.이 기사를 보세요.
언급URL : https://stackoverflow.com/questions/3701233/oracle-drop-table-constraints-without-dropping-tables
반응형
'programing' 카테고리의 다른 글
단일 따옴표 내부의 변수 확장 (0) | 2023.09.01 |
---|---|
Laravel MySql 드라이버를 찾을 수 없음 (0) | 2023.09.01 |
저장 프로시저 정의자 변경 (0) | 2023.09.01 |
SQL의 두 비트 마스크를 비교하여 일치하는 비트가 있는지 확인 (0) | 2023.09.01 |
점선 테두리 스트로크 길이 및 스트로크 간 거리 제어 (0) | 2023.09.01 |