데이터 유형은 테이블에 저장할 수있는 데이터의 종류를 제한하는 방법입니다. 그러나 많은 응용 분야에서 그들이 제공하는 범퍼카 토토 조건이 너무 거칠다. 예를 들어, 제품 가격이 포함 된 열은 아마도 양수 값 만 허용해야합니다. 그러나 양수 만 받아들이는 표준 데이터 유형은 없습니다. 또 다른 문제는 다른 열이나 행과 관련하여 열 데이터를 제한 할 수 있다는 것입니다. 예를 들어, 제품 정보가 포함 된 테이블에는 각 제품 번호에 대해 단 하나의 행만 있어야합니다.
이를 위해 SQL을 사용하면 열과 테이블의 범퍼카 토토 조건을 정의 할 수 있습니다. 범퍼카 토토 조건은 원하는만큼 테이블의 데이터를 많이 제어 할 수 있습니다. 사용자가 범퍼카 토토 조건을 위반하는 열에 데이터를 저장하려고하면 오류가 발생합니다. 값이 기본값 정의에서 나온 경우에도 적용됩니다.
체크 범퍼카 토토 조건이 가장 일반적인 범퍼카 토토 조건 유형입니다. 특정 열의 값이 부울 (진실 값) 표현식을 충족해야 함을 지정할 수 있습니다. 예를 들어, 긍정적 인 제품 가격이 필요하기 위해 다음을 사용할 수 있습니다.
테이블 제품 생성 (
product_no 정수,
이름 텍스트,
가격 숫자점검 (가격 0));
보시다시피, 구속 조건 정의는 기본값 정의와 마찬가지로 데이터 유형에 따라옵니다. 기본값 및 범퍼카 토토 조건은 순서대로 나열 될 수 있습니다. 점검 범퍼카 토토 조건은 핵심 단어로 구성됩니다check
괄호 안의 표현식이 뒤 따릅니다. 체크 범퍼카 토토 조건 표현식은 따라서 제한된 열을 포함해야합니다. 그렇지 않으면 범퍼카 토토 조건이 너무 의미가 없습니다.
범퍼카 토토 조건에 별도의 이름을 줄 수도 있습니다. 오류 메시지를 명확히하고 오류 메시지를 변경해야 할 때 범퍼카 토토 조건을 참조 할 수 있습니다. 구문은 다음과 같습니다.
테이블 제품 생성 (
product_no 정수,
이름 텍스트,
가격 숫자범퍼카 토토 긍정적 _price점검 (가격 0)
);
따라서 이름이 지정된 범퍼카 토토 조건을 지정하려면 키워드를 사용하십시오범퍼카 토토
다음에 식별자가 뒤 따른 다음 범퍼카 토토 조건 정의가 이어집니다. (이런 식으로 범퍼카 토토 이름을 지정하지 않으면 시스템이 이름을 선택합니다.)
확인 범퍼카 토토 조건은 여러 열을 참조 할 수도 있습니다. 일반 가격과 할인 된 가격을 저장하면 할인 된 가격이 일반 가격보다 낮은 지 확인하고 싶다고 가정 해 봅시다..
테이블 제품 생성 (
product_no 정수,
이름 텍스트,
가격 숫자 점검 (가격 0),
할인 된 숫자 숫자 점검 (할인 된 _price 0),check (가격 할인 _price));
처음 두 가지 범퍼카 토토 조건은 익숙해 보일 것입니다. 세 번째는 새로운 구문을 사용합니다. 특정 열에 첨부되지 않고 대신 쉼표로 구분 된 열 목록에 별도의 항목으로 나타납니다. 열 정의 및 이러한 범퍼카 토토 조건 정의는 혼합 순서로 나열 될 수 있습니다.
첫 번째 두 가지 범퍼카 토토 조건은 열 범퍼카 토토 조건 인 반면, 세 번째 범퍼카 토토 조건은 하나의 열 정의와 별도로 기록되기 때문에 테이블 범퍼카 토토 조건입니다. 열 범퍼카 토토 조건은 테이블 범퍼카 토토 조건으로 서면으로 작성될 수 있지만, 컬럼 제한 조건은 첨부 된 열만 참조해야하기 때문에 반대는 반드시 가능하지는 않습니다. (PostgreSQL해당 규칙을 시행하지는 않지만 테이블 정의가 다른 데이터베이스 시스템과 작동하도록하려면 따라야합니다. 위의 예는 다음과 같이 쓸 수 있습니다..
테이블 제품 생성 ( product_no 정수, 이름 텍스트, 가격 숫자, 확인 (가격 0), 할인 된 숫자 숫자, Check (할인 된 _price 0), 확인 (가격 할인 _price) );
또는 심지어 :
테이블 제품 생성 ( product_no 정수, 이름 텍스트, 가격 숫자 점검 (가격 0), 할인 된 숫자 숫자, Check (할인 된 _price 0 및 가격 할인 _price) );
맛의 문제입니다.
열 범퍼카 토토과 같은 방식으로 테이블 범퍼카 토토 조건에 이름을 할당 할 수 있습니다 :
테이블 제품 생성 (
product_no 정수,
이름 텍스트,
가격 숫자,
확인 (가격 0),
할인 된 숫자 숫자,
Check (할인 된 _price 0),범퍼카 토토 조건 valid_discount점검 (가격 할인 _price)
);
점검 표현식이 True 또는 Null 값으로 평가되면 점검 범퍼카 토토이 충족된다는 점에 유의해야합니다. 피연산자가 널 인 경우 대부분의 표현식은 널 값으로 평가되므로 제한된 열에서 널 값을 방지하지 않습니다. 열에 널 값이 포함되지 않도록하기 위해 다음 섹션에 설명 된 널없는 범퍼카 토토 조건을 사용할 수 있습니다.
PostgreSQL지원하지 않음check
17124_17222check
이 규칙을 위반하는 범퍼카 토토 조건은 간단한 테스트에서 작동하는 것으로 보일 수 있습니다. 데이터베이스가 범퍼카 토토 조건이 허위 상태에 도달하지 않음을 보장 할 수는 없습니다 (관련 다른 행의 후속 변경으로 인해). 이로 인해 데이터베이스 덤프가 발생하고 복원이 실패합니다. 완전한 데이터베이스 상태가 범퍼카 토토 조건을 충족시키는 순서로로드되지 않기 때문에 완전한 데이터베이스 상태가 범퍼카 토토 조건과 일치하는 경우에도 복원이 실패 할 수 있습니다. 가능하면 사용고유 한
, 제외
또는외국 키
크로스 행 및 교차 테이블 제한을 표현하기위한 범퍼카 토토 조건.
당신이 원하는 것이 지속적으로 유지 된 일관성 보증이 아니라 행 삽입시 다른 행에 대한 일회성 검사라면젠 범퍼카 토토 : 문서 : 18 : 37 장. 트리거이를 구현하는 데 사용할 수 있습니다. (이 접근법은 덤프/복원 문제를 피하기 때문에pg_dump데이터를 복원 한 후까지 트리거를 다시 설치하지 않으므로 덤프/복원 중에 수표가 시행되지 않도록합니다.)
PostgreSQLcheck
범퍼카 토토 조건은 불변입니다. 즉, 동일한 입력 행에 대해 항상 동일한 결과를 제공합니다. 이 가정은 검사를 정당화하는 것입니다check
줄이 삽입되거나 업데이트 된 경우에만 범퍼카 토토 조건은 다른 시간에 없습니다. (다른 테이블 데이터를 참조하지 않는 것에 대한 위의 경고는 실제로이 제한의 특별한 경우입니다.)
이 가정을 위반하는 일반적인 방법의 예는 사용자 정의 함수를 a에 참조하는 것입니다.check
표현식, 그 기능의 동작을 변경합니다.PostgreSQL그것을 허용하지는 않지만, 이제 테이블에 행이있는 경우check
범퍼카 토토. 이렇게하면 후속 데이터베이스 덤프가 발생하고 복원이 실패합니다. 이러한 변경 사항을 처리하는 권장 방법은 범퍼카 토토 조건을 떨어 뜨리는 것입니다 (사용Alter Table
), 함수 정의를 조정하고 범퍼카 토토 조건을 다시 구분하여 모든 테이블 행에 대해 다시 확인합니다.
NOL NULL ASSARTAINT는 단순히 열이 널 값을 가정해서는 안된다는 것을 지정합니다. 구문 예 :
테이블 제품 생성 ( product_no 정수NOT NULL, 이름 텍스트NOT NULL, 가격 숫자 );
명시 적 범퍼카 토토 조건 이름도 지정할 수 있습니다 (예 :
테이블 제품 생성 (
product_no 정수는 null,
이름 텍스트범퍼카 토토 제품 _name_not_nullNOT NULL,
가격 숫자
);
NOL NULL ASSARTAINT는 일반적으로 열 범퍼카 토토 조건으로 작성됩니다. 테이블 범퍼카 토토으로 작성하기위한 구문은입니다.
테이블 제품 생성 ( product_no 정수, 이름 텍스트, 가격 숫자,NOLL PRODUCT_NO, NOL NULL NAME);
그러나이 구문은 표준이 아니며 주로 사용하기위한 것입니다pg_dump.
NOL NULL 범퍼카 토토 조건은 기능적으로 점검 범퍼카 토토 조건을 생성하는 것과 동일합니다check (
하지만PostgreSQL명시 적이 아닌 구속 조건을 만드는 것이 더 효율적입니다.column_name
물론 열에는 둘 이상의 범퍼카 토토 조건을 가질 수 있습니다. 범퍼카 토토 조건을 차례로 작성하십시오 :
테이블 제품 생성 ( product_no 정수는 null, 이름 텍스트가 null, 가격 숫자가 아닌 가격 확인 (가격 0) );
주문은 중요하지 않습니다. 범퍼카 토토 조건을 확인하는 순서가 반드시 결정되는 것은 아닙니다.
그러나 열에는 최대 한 가지 명시적인 null 범퍼카 토토 조건을 가질 수 있습니다.
theNOT NULL
범퍼카 토토 조건이 있습니다 :null
범퍼카 토토. 그렇다고 열이 널이어야한다는 것을 의미하지는 않습니다. 대신, 이것은 단순히 열이 null 일 수있는 기본 동작을 선택합니다. 그만큼NULL
SQL 표준에는 범퍼카 토토이 없으며 휴대용 응용 프로그램에 사용해서는 안됩니다. (에만 추가되었습니다PostgreSQL다른 데이터베이스 시스템과 호환됩니다.) 그러나 일부 사용자는 스크립트 파일에서 범퍼카 토토 조건을 쉽게 전환 할 수 있기 때문에 좋아합니다. 예를 들어 :부터 시작할 수 있습니다.
테이블 제품 생성 ( product_no 정수 null, 이름 텍스트 null, 가격 숫자 널 );
그런 다음not
원하는 곳.
대부분의 데이터베이스 설계에서 대부분의 열은 널 표시되지 않아야합니다.
고유 한 범퍼카 토토 조건은 열 또는 열 그룹에 포함 된 데이터가 테이블의 모든 행에서 고유한지 확인합니다. 구문은 다음과 같습니다.
테이블 제품 생성 (
product_no 정수고유 한,
이름 텍스트,
가격 숫자
);
열 범퍼카 토토으로 작성된 경우 :
테이블 제품 생성 (
product_no 정수,
이름 텍스트,
가격 숫자,고유 (Product_No));
테이블 범퍼카 토토으로 작성된 시점.
열 그룹에 대한 고유 한 범퍼카 토토 조건을 정의하려면 쉼표로 분리 된 열 이름을 가진 테이블 범퍼카 토토 조건으로 작성하십시오.
테이블 작성 예제 (
정수,
B 정수,
C 정수,고유 (A, C));
이것은 표시된 열의 값의 조합이 전체 테이블 전체에서 독특하다는 것을 지정하지만, 열 중 하나는 고유 할 필요는 없으며 보통은 아닙니다..
일반적인 방법으로 고유 한 범퍼카 토토 조건에 대해 자신의 이름을 할당 할 수 있습니다.
테이블 제품 생성 (
product_no 정수범퍼카 토토 조건 Must_be_different고유 한,
이름 텍스트,
가격 숫자
);
고유 한 범퍼카 토토 조건을 추가하면 범퍼카 토토 조건에 나열된 열 또는 열 그룹에 고유 한 B- 트리 색인이 자동으로 생성됩니다. 일부 행만 포괄하는 독창성 제한은 고유 한 범퍼카 토토으로 작성 될 수 없지만 고유 한 제한을 만들어 그러한 제한을 시행 할 수 있습니다Postgresql: Tài liệu: 18: 11.8. 젠 범퍼카 토토ỉ mục một phần.
일반적으로, 범퍼카 토토 조건에 포함 된 모든 열의 값이 동일 인 표에 두 개의 행이 있으면 고유 한 범퍼카 토토 조건이 위반됩니다. 기본적 으로이 비교에서는 두 개의 널 값이 동일하게 간주되지 않습니다. 즉, 고유 한 범퍼카 토토 조건이 있더라도 제한된 열 중 하나 이상에 널 값이 포함 된 중복 행을 저장할 수 있습니다. 이 동작은 절을 추가하여 변경 될 수 있습니다널 뚜렷하지 않은
, 좋아요
테이블 제품 생성 (
product_no 정수 고유널 뚜렷하지 않은,
이름 텍스트,
가격 숫자
);
또는
테이블 제품 생성 (
product_no 정수,
이름 텍스트,
가격 숫자,
고유한널 뚜렷하지 않음(product_no)
);
기본 동작은 명시 적으로 지정할 수 있습니다Nulls Distine
. 고유 한 범퍼카 토토 조건에서 기본 널 처리는 SQL 표준에 따라 구현 정의되며 다른 구현에는 다른 동작이 있습니다. 따라서 휴대용의 고안된 응용 프로그램을 개발할 때주의하십시오.
기본 키 범퍼카 토토 조건은 열 또는 열 그룹이 테이블의 행에 고유 식별자로 사용할 수 있음을 나타냅니다. 이를 위해서는 값이 독특하고 무효가되지 않아야합니다. 따라서 다음 두 테이블 정의는 동일한 데이터를 수락합니다.
테이블 제품 생성 ( Product_No 정수 고유 한 Null, Null, 이름 텍스트, 가격 숫자 );
테이블 제품 생성 (
product_no 정수기본 키,
이름 텍스트,
가격 숫자
);
기본 키는 둘 이상의 열에 걸쳐있을 수 있습니다. 구문은 고유 한 범퍼카 토토과 유사합니다.
테이블 생성 예제 (
정수,
B 정수,
C 정수,기본 키 (A, C));
기본 키를 추가하면 기본 키에 나열된 열 또는 열 그룹에 고유 한 B- 트리 색인이 자동으로 생성되고 열이 표시되도록 강요NOT NULL
.
테이블에는 최대 하나의 기본 키가있을 수 있습니다. (널없는 범퍼카 토토 조건과 결합 된 고유 한 범퍼카 토토 조건은 여러 가지가있을 수 있지만 기능적으로 거의 동일하지만 하나만 기본 키로 식별 할 수 있습니다.) 관계형 데이터베이스 이론은 모든 테이블에 기본 키가 있어야한다고 지시합니다. 이 규칙은에 의해 시행되지 않습니다.PostgreSQL, 그러나 일반적으로 그것을 따르는 것이 가장 좋습니다.
기본 키는 문서화 목적 및 클라이언트 응용 프로그램 모두에 유용합니다. 예를 들어, 행 값을 수정할 수있는 GUI 응용 프로그램은 행을 고유하게 식별 할 수 있도록 테이블의 기본 키를 알아야 할 것입니다. 데이터베이스 시스템이 선언 된 경우 기본 키를 사용하는 다양한 방법도 있습니다. 예를 들어, 기본 키는 테이블을 참조하는 외래 키의 기본 대상 열을 정의합니다.
외국 키 범퍼카 토토 조건은 열 (또는 열 그룹)의 값이 다른 테이블의 일부 행에 나타나는 값과 일치해야 함을 지정합니다. 우리는 이것이를 유지한다고 말합니다.참조 무결성두 관련 테이블 사이.
우리가 이미 여러 번 사용한 제품 테이블이 있다고 말합니다 :
테이블 제품 생성 ( product_no 정수 기본 키, 이름 텍스트, 가격 숫자 );
해당 제품의 주문을 저장하는 테이블이 있다고 가정 해 봅시다. 주문 테이블에 실제로 존재하는 제품의 주문 만 포함되어 있는지 확인하고 싶습니다. 따라서 제품 테이블을 참조하는 주문 테이블에서 외국 키 범퍼카 토토 조건을 정의합니다.
테이블 주문 생성 (
Order_id 정수 기본 키,
product_no 정수참조 제품 (Product_No),
수량 정수
);
이제 비 널로 주문을 만드는 것은 불가능합니다product_no
제품 테이블에 나타나지 않는 항목.
우리는이 상황에서 주문 테이블이라고 말합니다.참조테이블 및 제품 테이블은입니다.참조테이블. 마찬가지로 참조 및 참조 열이 있습니다.
위 명령을 다음과 같이 단축 할 수도 있습니다.
테이블 주문 생성 (
Order_id 정수 기본 키,
product_no 정수참조 제품,
수량 정수
);
열 목록이 없기 때문에 참조 테이블의 기본 키는 참조 열로 사용됩니다..
일반적인 방식으로 외국 키 범퍼카 토토 조건에 대한 자신의 이름을 할당 할 수 있습니다.
외국 키는 열 그룹을 제한하고 참조 할 수 있습니다. 평소와 같이 테이블 범퍼카 토토 조건 양식으로 작성해야합니다. 다음은 고안 구문 예입니다.
테이블 생성 t1 (
정수 기본 키,
B 정수,
C 정수,외국 키 (B, C) 참조 기타 _table (C1, C2));
물론 제한된 열의 숫자와 유형은 참조 열의 숫자와 유형과 일치해야합니다.
때로는에 유용합니다“기타 테이블”동일한 테이블이 될 외국 키 범퍼카 토토 조건; 이것을 A라고합니다.자기 참조외국 키. 예를 들어, 테이블의 행을 트리 구조의 노드를 나타내는 경우 쓸 수 있습니다
테이블 트리 만들기 ( node_id 정수 기본 키, parent_id 정수 참조 트리, 이름 텍스트, ... );
최상위 노드에 null이 있습니다parent_id
parent_id
항목은 테이블의 유효한 행을 참조하도록 제한됩니다.
테이블은 둘 이상의 외국 키 범퍼카 토토 조건을 가질 수 있습니다. 이것은 테이블 사이의 다수의 관계를 구현하는 데 사용됩니다. 제품 및 주문에 대한 테이블이 있지만 이제 하나의 주문에 많은 제품을 포함하도록 허용하고 싶습니다 (위의 구조가 허용하지 않은). 이 테이블 구조를 사용할 수 있습니다 :
테이블 제품 생성 ( product_no 정수 기본 키, 이름 텍스트, 가격 숫자 ); 테이블 주문 생성 ( Order_id 정수 기본 키, Shipping_Address 텍스트, ... ); 테이블 작성 order_items ( product_no 정수 참조 제품, Order_id 정수 참조 주문, 수량 정수, 기본 키 (Product_No, Order_id) );
기본 키가 마지막 테이블의 외래 키와 겹치는 것을 주목하십시오.
우리는 외국 키가 어떤 제품과 관련이없는 명령을 만들지 않는다는 것을 알고 있습니다. 그러나 주문을 작성한 후 제품이 제거되면 어떻게해야합니까? SQL을 사용하면이를 처리 할 수 있습니다. 직관적으로, 우리는 몇 가지 옵션이 있습니다 :
참조 된 제품 삭제 허용
주문 삭제
다른 것?
이를 설명하려면 위의 다수의 관계 예에 대한 다음 정책을 구현합시다.Order_Items
), 우리는 그것을 허용하지 않습니다. 누군가 주문을 제거하면 주문 항목도 제거됩니다.
테이블 제품 생성 ( product_no 정수 기본 키, 이름 텍스트, 가격 숫자 ); 테이블 주문 생성 ( Order_id 정수 기본 키, Shipping_Address 텍스트, ... ); 테이블 작성 order_items ( product_no 정수 참조 제품ON DELETE 제한, Order_id 정수 참조 주문ON DELETE CASCADE, 수량 정수, 기본 키 (Product_No, Order_id) );
기본값ON DELETE
행동은on 삭제되지 않음
; 이것은 지정할 필요가 없습니다. 이는 참조 테이블의 삭제가 진행될 수 있음을 의미합니다. 그러나 외국 키 범퍼카 토토 조건은 여전히 만족해야 하므로이 작업은 일반적으로 오류가 발생합니다. 그러나 외국 키 범퍼카 토토 조건을 확인하는 것도 나중에 거래에서 연기 될 수 있습니다 (이 장에서는 다루지 않음). 이 경우행동 없음
설정은 다른 명령이 허용됩니다“고정”예를 들어, 범퍼카 토토 조건을 확인하기 전의 상황은 예를 들어 참조 테이블에 다른 적합한 행을 삽입하거나 참조 테이블에서 지금 방해하는 행을 삭제하여.
제한
보다 엄격한 설정행동 없음
. 참조 행의 삭제를 방지합니다.제한
거래 후반까지 수표가 연기되지 않습니다.
캐스케이드
참조 행이 삭제되면 참조를 자동으로 삭제해야합니다..
두 가지 다른 옵션이 있습니다 :SET NULL
and기본값 설정
. 이로 인해 참조 행의 참조 열이 참조 된 행이 삭제 될 때 각각 참조 행 (들)의 널로 설정되거나 기본값으로 설정됩니다. 이것들은 범퍼카 토토을 관찰하는 것을 실례하지 않습니다. 예를 들어, 조치가 지정하는 경우기본값 설정
그러나 기본값은 외래 키 범퍼카 토토 조건을 충족시키지 않으면 작업이 실패합니다.
적절한 선택ON DELETE
동작은 관련 테이블이 나타내는 객체의 종류에 따라 다릅니다. 참조 테이블이 참조 테이블로 표시되는 내용의 구성 요소 인 것을 나타내고 독립적으로 존재할 수없는 경우캐스케이드
적절할 수 있습니다. 두 테이블이 독립 객체를 나타내는 경우제한
또는행동 없음
더 적합합니다. 실제로 두 객체를 실제로 삭제하려는 응용 프로그램은 이에 대해 명시적이고 두 개의 삭제 명령을 실행해야합니다. 위의 예에서 주문 항목은 주문의 일부이며 주문이 삭제되면 자동으로 삭제되는 경우 편리합니다. 그러나 제품과 주문은 다른 것이므로 제품을 삭제하면 자동으로 일부 주문 품목을 삭제할 수 있습니다. 행동SET NULL
또는기본값 설정
외국 키 관계가 선택 정보를 나타내는 경우 적절할 수 있습니다. 예를 들어, 제품 테이블에 제품 관리자에 대한 참조가 포함되어 있고 제품 관리자 항목이 삭제 된 경우 제품 관리자를 NULL로 설정하거나 기본값으로 설정하십시오.
행동SET NULL
및기본값 설정
열 목록을 가져 와서 설정할 열을 지정할 수 있습니다. 일반적으로 외국 키 범퍼카 토토 조건의 모든 열이 설정됩니다. 일부 특수한 경우 하위 세트 만 설정하는 것이 유용합니다. 다음 예를 고려하십시오.
테이블 세입자 만들기 (
TENANT_ID 정수 기본 키
);
테이블 사용자 만들기 (
TENANT_ID 정수 참조 삭제 캐스케이드의 임차인,
user_id 정수가 null,
기본 키 (tenant_id, user_id)
);
테이블 게시물 작성 (
TENANT_ID 정수 참조 삭제 캐스케이드의 임차인,
post_id 정수가 null,
author_id 정수,
기본 키 (tenant_id, post_id),
외국 키 (tenant_id, author_id) 참조 삭제 세트 null 참조(author_id));
열의 사양이 없으면 외국 키가 열을 설정합니다.tenant_id
null이지만 그 열은 여전히 기본 키의 일부로 필요합니다.
유사성ON DELETE
또한on update
참조 열이 변경 될 때 (업데이트)로 호출됩니다. 가능한 조치는 동일합니다. 열 목록을 지정할 수 없다는 점을 제외하고.SET NULL
and기본값 설정
. 이 경우캐스케이드
는 참조 열의 업데이트 된 값이 참조 행에 복사되어야 함을 의미합니다. 또한 사이에 눈에 띄는 차이가 있습니다.업데이트 없음 조치 없음
(기본값) 및업데이트 제한
. 전자는 업데이트가 진행되도록하고 업데이트 후 주에 대한 외국 키 범퍼카 토토 조건을 확인합니다. 후자는 업데이트 후 상태가 여전히 범퍼카 토토 조건을 충족하더라도 업데이트가 실행되는 것을 방지합니다. 이렇게하면 참조 행을 뚜렷하지만 동일하게 비교하는 값으로 업데이트하는 것을 방지합니다 (예 : 케이스에 민감한 콜로레이션이있는 문자 문자열 유형이 사용되는 경우 다른 사례 변형이있는 문자열 문자열)..
일반적으로, 참조 열은 참조 열이 무인 상태 인 경우 외래 키 범퍼카 토토 조건을 충족시킬 필요가 없습니다. 만약에전체 일치
외국 키 선언에 추가되며, 참조 열이 모든 참조 열이 Null 인 경우에만 범퍼카 토토 조건을 만족시키는 참조 행이 탈출됩니다 (따라서 NULL 및 NULL 값의 혼합이 실패 할 수 있습니다전체 일치
범퍼카 토토 조건). 외국의 주요 범퍼카 토토 조건을 만족시키지 않도록 행을 참조하는 것을 원하지 않으면 참조 열을로 선언하십시오.NOT NULL
.
외국 키는 기본 키이거나 고유 한 범퍼카 토토 조건을 형성하거나 비평가 고유 인덱스의 열인 열을 참조해야합니다. 이는 참조 된 열에 항상 참조 행에 일치하는지 여부에 대한 효율적인 조회를 허용하는 인덱스가 있음을 의미합니다. A 이후로삭제
참조 테이블 또는 an의 행의 행업데이트
참조 열의 기존 값과 일치하는 행에 대한 참조 테이블을 스캔해야하므로 참조 열을 색인화하는 것이 좋습니다. 이것이 항상 필요한 것은 아니며 색인하는 방법에 대한 많은 선택이 있기 때문에, 외국 키 범퍼카 토토 조건의 선언이 참조 열에서 인덱스를 자동으로 생성하지는 않습니다..
데이터 업데이트 및 삭제에 대한 자세한 정보는범퍼카 토토 꽁 머니 : 문서 : 18 : 6 장 데이터 조작. 또한 참조 문서의 외국 키 범퍼카 토토 조건 구문에 대한 설명을 참조하십시오.테이블 만들기.
제외 범퍼카 토토 조건은 지정된 연산자를 사용하여 지정된 열 또는 표현식에 두 행이 비교되면 이러한 연산자 비교 중 하나 이상이 False 또는 Null을 반환해야합니다. 구문은 다음과 같습니다.
테이블 서클 생성 ( C 서클, GIST 사용 (& with &&) 제외 );
참조테이블 작성 ... 범퍼카 토토 ... 제외
자세한 내용.
제외 범퍼카 토토 조건을 추가하면 범퍼카 토토 조건 선언에 지정된 유형의 인덱스가 자동으로 생성됩니다.