5.15. 무지개 토토성 추적#

외국의 주요 제약 조건, 뷰, 트리거, 기능 등이있는 많은 테이블과 관련된 복잡한 데이터베이스 구조를 만들 때 객체간에 종속성의 순을 암시 적으로 만듭니다. 예를 들어, 외국 키 제약 조건이있는 테이블은 참조하는 테이블에 따라 다릅니다.

전체 데이터베이스 구조의 무결성을 보장하려면PostgreSQL다른 객체가 여전히 무지개 토토하는 객체를 드롭 할 수 없는지 확인하십시오. 예를 들어, 우리가 고려한 제품 테이블을 삭제하려고섹션 5.5.5에 따라 주문 테이블이있는 경우 다음과 같은 오류 메시지가 발생합니다.

드롭 테이블 제품;

오류 : 다른 객체가 그것에 무지개 토토하기 때문에 테이블 제품을 삭제할 수 없습니다.
세부 사항 : 제약 조건 Orders_Product_no_fkey 테이블 주문에 따라 테이블 제품에 따라 다릅니다.
힌트 : Drop ... Cascade를 사용하여 종속 객체를 떨어 뜨립니다.

오류 메시지에는 유용한 힌트가 포함되어 있습니다.

드롭 테이블 제품 캐스케이드;

그리고 모든 종속 객체는 재귀 적으로 무지개 토토하는 객체와 마찬가지로 제거됩니다. 이 경우 주문 테이블을 제거하지 않고 외래 키 제약 조건 만 제거됩니다. 외국의 주요 제약에 무지개 토토하지 않기 때문에 거기서 멈 춥니 다. (무엇을 확인하고 싶다면드롭 ... 캐스케이드will do, run드롭없음캐스케이드읽기세부 사항출력.)

거의 모든드롭명령postgresql지원 지정캐스케이드. 물론 가능한 종속성의 특성은 물체의 유형에 따라 다릅니다. 당신은 또한 쓸 수 있습니다제한대신캐스케이드기본 동작을 얻으려면 다른 객체가 무지개 토토하는 객체를 삭제하는 것을 방지하는 것입니다.

12527_12533

SQL 표준에 따르면 어느 쪽이든 지정제한또는12656_12665A에서 필요합니다드롭command. 데이터베이스 시스템은 실제로 해당 규칙을 시행하지 않지만 기본 동작이제한또는캐스케이드시스템마다 다릅니다.

if a드롭명령은 여러 개체를 나열합니다.캐스케이드지정된 그룹 외부에 종속성이있을 때만 필요합니다. 예를 들어, 말할 때드롭 테이블 tab1, tab2외국 키 참조의 존재tab1Fromtab2캐스케이드성공하려면 필요합니다.

신체가 문자열 리터럴로 정의 된 사용자 정의 함수 또는 절차의 경우PostgreSQL인수 및 결과 유형과 같은 함수의 외부가 가시 가능한 속성과 관련된 종속성을 추적하지만not기능 본문을 검사 하여만 알 수있는 종속성. 예를 들어,이 상황을 고려하십시오 :

유형 무지개 생성 열거 ( '빨간색', '오렌지', '옐로우',
                             '녹색', '파란색', '보라색');

테이블 my_colors (색상 무지개, 참고 텍스트)를 만듭니다.

함수 생성 get_color_note (Rainbow) 텍스트를 반환합니다
  'color = $ 1'인 my_colors에서 메모를 선택하십시오.
  언어 SQL;

(참조젠 토토 PostgreSQL : 문서 : 70 : 36.5. 쿼리 언어 (SQL) 함수SQL 언어 함수에 대한 설명.)PostgreSQLget_color_note함수는에 따라 다릅니다.레인보우유형 : 유형을 삭제하면 인수 유형이 더 이상 정의되지 않기 때문에 함수가 삭제됩니다. 하지만postgresql고려하지 않을 것입니다get_color_note에 무지개 토토하려면my_colors테이블이므로 테이블이 삭제되면 기능이 떨어지지 않습니다. 이 접근법에는 단점이 있지만 이점도 있습니다. 테이블이 누락 된 경우 기능이 여전히 유효하지만 실행하면 오류가 발생합니다. 같은 이름의 새 테이블을 만들면 기능이 다시 작동 할 수 있습니다.

반면에, SQL 언어 함수 또는 신체가 SQL 표준 스타일로 작성된 절차의 경우, 본문은 기능 정의 시간에 구문 분석되며 구문 분석기에 의해 인식되는 모든 종속성은 저장됩니다. 따라서 위의 기능을로 작성하면

​​함수 생성 get_color_note (Rainbow) 텍스트를 반환합니다
원자를 시작하십시오
  색상 = $ 1 인 my_colors에서 메모를 선택하십시오.
끝;

그런 다음 함수의 종속성my_colors테이블은 알려지고 시행됩니다.드롭.

정정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면