모든 외래 키 제약 조건을 해제하고 다시 활성화하려면 이후에 다시 사용하도록 설정해야합니다.이를 수행 할 수있는 방법이 있습니까?Firebird 2.1에서 테이블의 모든 제약 조건을 일시적으로 비활성화하려면 어떻게합니까?
나는 SQLServer가 허용한다는 것을 알고 있지만 Firebird는 어떨까요?
모든 외래 키 제약 조건을 해제하고 다시 활성화하려면 이후에 다시 사용하도록 설정해야합니다.이를 수행 할 수있는 방법이 있습니까?Firebird 2.1에서 테이블의 모든 제약 조건을 일시적으로 비활성화하려면 어떻게합니까?
나는 SQLServer가 허용한다는 것을 알고 있지만 Firebird는 어떨까요?
AFAICT 외래 키는 2.1까지의 Firebird에서 비활성화 할 수 없습니다.
삭제하고 다시 만들어야합니다.
Devshed에 similar thread이 있습니다.
유일한 방법은 삭제 한 다음 나중에 다시 만드는 것입니다. 제약 조건은 데이터가 아니므로 데이터베이스에서 정보를 잃지 않으므로 무해한 작업입니다 (나중에 스크립트를 다시 작성해야하는 경우).
SVN 저장소에있는 FlameRobin 버전에는 선택된 테이블 열 종속성에 대해 DROP 및 CREATE 스크립트를 자동으로 생성하는 옵션이 있습니다. 마지막 공식 릴리스에는 전체 테이블에 대해 동일한 옵션이 있으므로 도움이 될 수 있습니다. 그러나 전체 데이터베이스에 대해 수행 할 수있는 옵션은 없습니다. 어쩌면 다른 관리자 일 수도 있습니다. 도구에는 해당 기능이 있습니다.
+1. 시스템 테이블을 보여주는 도구를 사용하면 RDB $ RELATION_CONSTRAINTS에 외래 키 제약 조건을 해제 할 수있는 필드가 없다는 것을 알 수 있습니다. 인덱스 OTOH는 비활성으로 만들 수 있으며 RDB $ INDICES에는 필드 RDB $ INDEX_INACTIVE가 있습니다. – mghie
예, 제약 조건을 지원하는 인덱스는 비활성화 할 수 없습니다. 그렇게하면 오류가 발생합니다. –