| 롤 토토 : 문서 : 9.5 : 롤 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.5 : 토토 캔 생성 | 스포츠 토토 사이트 PostgreSQL : 문서 : 9.5 : SQL 명령 | PostgreSQL : 문서 : 9.5 : 이벤트 윈 토토 만들기 | |
토토 꽁 머니 만들기이름[ 그대로 ]데이터_유형[ 대조조합]
[ 기본표현 ]
[ 제약 [ ... ] ]
어디에서제약다음과 같습니다:[ 제약제약_이름]
NULL이 아님 | NULL | 확인하다 (표현) }토토 꽁 머니 만들기새 도메인을 생성합니다. 도메인은 본질적으로 선택적 제약 조건(허용되는 값 집합에 대한 제한 사항)이 있는 데이터 유형입니다. 도메인을 정의하는 사용자가 도메인의 소유자가 됩니다.
스키마 이름이 제공된 경우(예:토토 꽁 머니 myschema.mydomain 생성 ...) 그러면 지정된 스키마에 도메인이 생성됩니다. 그렇지 않으면 현재 스키마에 생성됩니다. 도메인 이름은 해당 스키마에 존재하는 유형 및 도메인 중에서 고유해야 합니다.
도메인은 유지 관리를 위해 필드에 대한 공통 제약 조건을 단일 위치로 추상화하는 데 유용합니다. 예를 들어 여러 테이블에 이메일 주소 열이 포함될 수 있으며, 모두 주소 구문을 확인하기 위해 동일한 CHECK 제약 조건이 필요합니다. 각 테이블의 제약 조건을 개별적으로 설정하는 대신 도메인을 정의하세요.
도메인을 생성하려면 다음이 있어야 합니다.사용기본 유형에 대한 권한.
생성될 도메인의 이름(선택적으로 스키마 한정).
토토 꽁 머니의 기본 데이터 유형. 여기에는 배열 지정자가 포함될 수 있습니다.
도메인에 대한 선택적 대조입니다. 데이터 정렬을 지정하지 않으면 기본 데이터 형식의 기본 데이터 정렬이 사용됩니다. 다음과 같은 경우 기본 유형을 조합할 수 있어야 합니다.콜레이트지정되었습니다.
그기본값절은 도메인 데이터 유형의 열에 대한 기본값을 지정합니다. 값은 변수가 없는 표현식입니다(그러나 하위 쿼리는 허용되지 않음). 기본 표현식의 데이터 유형은 도메인의 데이터 유형과 일치해야 합니다. 기본값이 지정되지 않은 경우 기본값은 null 값입니다.
기본 표현식은 열의 값을 지정하지 않는 모든 삽입 작업에 사용됩니다. 특정 열에 대해 기본값이 정의되면 도메인과 연결된 모든 기본값이 재정의됩니다. 결과적으로 도메인 기본값은 기본 데이터 유형과 관련된 모든 기본값을 재정의합니다.
제약조건에 대한 선택적 이름입니다. 지정하지 않으면 시스템에서 이름을 생성합니다.
이 토토 꽁 머니의 값은 null이 될 수 없습니다(그러나 아래 참고 사항 참조).
이 도메인의 값은 null이 허용됩니다. 이것이 기본값입니다.
이 절은 비표준 SQL 데이터베이스와의 호환성만을 위한 것입니다. 새로운 애플리케이션에서는 사용이 권장되지 않습니다.
확인절은 무결성 제약 조건을 지정하거나 도메인 값이 충족해야 하는 테스트를 지정합니다. 각 제약 조건은 부울 결과를 생성하는 표현식이어야 합니다. 키워드를 사용해야 합니다.값테스트 중인 값을 참조합니다. TRUE 또는 UNKNOWN으로 평가되는 표현식은 성공합니다. 표현식이 FALSE 결과를 생성하면 오류가 보고되고 해당 값은 도메인 유형으로 변환될 수 없습니다.
현재,확인식은 하위 쿼리를 포함하거나 이외의 변수를 참조할 수 없습니다.값.
토토 꽁 머니에 여러 개가 있는 경우확인제약조건은 이름의 알파벳순으로 테스트됩니다. (PostgreSQL9.5 이전 버전에서는 특정 실행 명령을 따르지 않았습니다.확인제약조건.)
도메인 제약, 특히NULL이 아님는 값을 도메인 유형으로 변환할 때 확인됩니다. 이러한 제약 조건이 있음에도 불구하고 명목상 도메인 유형인 열이 null로 읽힐 수 있습니다. 예를 들어 도메인 열이 외부 조인의 Null 허용 쪽에 있는 경우 외부 조인 쿼리에서 이런 일이 발생할 수 있습니다. 좀 더 미묘한 예는 다음과 같습니다.
INSERT INTO 탭(domcol) VALUES ((SELECT domcol FROM tab WHERE false));
빈 스칼라 하위 SELECT는 도메인 유형으로 간주되는 null 값을 생성하므로 추가 제약 조건 확인이 적용되지 않으며 삽입이 성공합니다.
널 값이 모든 데이터 유형의 유효한 값이라는 SQL의 일반적인 가정 때문에 이러한 문제를 피하는 것은 매우 어렵습니다. 따라서 가장 좋은 방법은 null 값이 허용되도록 도메인의 제약 조건을 설계한 다음 열을 적용하는 것입니다.NULL이 아님토토 꽁 머니 유형을 직접적으로 제한하기보다는 필요에 따라 토토 꽁 머니 유형의 열로 제한합니다.
포스트그레SQL그렇다고 가정합니다확인제약조건의 조건은 변경할 수 없습니다. 즉, 동일한 입력 값에 대해 항상 동일한 결과를 제공합니다. 이 가정은 조사를 정당화하는 것입니다.확인값이 토토 꽁 머니 유형으로 처음 변환될 때만 제한되며 다른 경우에는 제한되지 않습니다. (이것은 본질적으로 테이블 처리와 동일합니다.확인제약조건, 다음에 설명된 대로섹션 5.3.1.)
이 가정을 깨는 일반적인 방법의 예는 다음에서 사용자 정의 함수를 참조하는 것입니다.확인표현식을 입력한 다음 해당 함수의 동작을 변경합니다.PostgreSQL이를 허용하지 않지만 현재 위반하는 도메인 유형의 저장된 값이 있는지 여부는 알 수 없습니다.확인제약. 이로 인해 후속 데이터베이스 덤프 및 다시 로드가 실패하게 됩니다. 이러한 변경을 처리하는 데 권장되는 방법은 제약 조건을 삭제하는 것입니다(토토 꽁 머니 변경), 함수 정의를 조정하고 제약 조건을 다시 추가하여 저장된 데이터와 비교하여 다시 확인합니다.
이 예는 다음을 생성합니다.us_postal_code데이터 유형을 선택한 다음 테이블 정의의 유형을 사용합니다. 정규식 테스트는 값이 유효한 미국 우편번호인지 확인하는 데 사용됩니다.
DOMAIN us_postal_code를 텍스트로 생성 확인하다( 값 ~ '^\d5$' OR 값 ~ '^\d5-\d4$' ); 테이블 만들기 us_snail_addy( address_id 직렬 기본 키, street1 텍스트는 NULL이 아닙니다. 스트리트 2 텍스트, 스트리트 3 텍스트, 도시 텍스트는 NULL이 아닙니다. 우편번호 us_postal_code NOT NULL );