PostgreSQL 테이블 종속성 추적

1272 단어
많은 테이블을 포함하고, 외부 키 제약, 보기, 트리거, 함수 등 복잡한 데이터베이스 구조를 가지고 있다면.그러면 당신은 대상 사이에 은근히 의존적인 네트워크를 만들 것이다.예를 들어, 외부 키의 제약을 가진 시계는 인용된 시계에 의존한다.
전체 데이터베이스 구조의 완전성을 확보하기 위해서 PostgreSQL은 다른 대상에 의존하는 대상을 삭제할 수 없습니다.예를 들어, 에서 주문서에 의존하는 제품 테이블을 삭제하려는 시도는 성공할 수 없으며 다음과 같은 오류 메시지가 나타납니다.
DROP TABLE products;

NOTICE:  constraint orders_product_no_fkey on table orders depends on table products
ERROR:  cannot drop table products because other objects depend on it
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
이 오류 메시지는 모든 의존 대상을 번거롭게 각각 삭제하고 싶지 않으면 실행할 수 있는 유용한 힌트를 포함하고 있습니다.
DROP TABLE products CASCADE;
그리고 모든 의존 대상은 삭제됩니다. (주문서는 삭제하지 않고 키 제약만 삭제합니다.)DROP을 검사하고 싶다면...CASCADE는 무엇을 할 것인가, CASCADE가 없는 DROP을 실행하고 NOTICE 메시지를 읽는다.
PostgreSQL의 모든 삭제 명령은 CASCADE 선언을 지원합니다.물론 구체적인 의존성 실체는 대상의 유형에 달려 있다.부족한 행동을 얻기 위해 CASCADE가 아닌 RESTRICT를 쓸 수도 있습니다. (다른 대상이 의존하는 대상을 삭제하는 것을 방지합니다.)
참고: SQL 표준에 따라 RESTRICT 또는 CASCADE 중 하나 이상을 선언해야 합니다.실제로 어떤 데이터베이스 시스템도 이 점을 강제하지 않지만, 기본적인 행동이 RESTRICT인지 CASCADE인지는 시스템에 따라 다르다.
참고: PostgreSQL 7.3 이전의 외부 키 제약조건 의존성과 시퀀스 필드 의존성은 업그레이드 과정에서 유지보수되거나 만들어지지 않습니다.모든 기타 의존성 유형은 7.3 버전 이전의 데이터베이스 업그레이드 과정에서 적절하게 만들어질 것이다.
전재 대상:https://www.cnblogs.com/wolaiye320/p/5601790.html

좋은 웹페이지 즐겨찾기