스포츠 토토 베트맨 만들기

CREATE DOMAIN — 새 도메인 정의

Synopsis

스포츠 토토 베트맨 만들기name[ AS ]data_type[ COLLATEcollation]
    [ 기본expression ]
    [ constraint [ ... ] ]

whereconstraint다음과 같습니다:[ 제약constraint_name]
 NULL이 아님 | NULL | CHECK (표현) }

설명

스포츠 토토 베트맨 만들기새 스포츠 토토 베트맨을 생성합니다. 스포츠 토토 베트맨은 본질적으로 선택적 제약 조건(허용되는 값 집합에 대한 제한 사항)이 있는 데이터 유형입니다. The user who defines a domain becomes its owner.

스키마 이름이 제공된 경우(예:스포츠 토토 베트맨 myschema.mydomain 만들기 ...) 그러면 지정된 스키마에 도메인이 생성됩니다. 그렇지 않으면 현재 스키마에 생성됩니다. 도메인 이름은 해당 스키마에 존재하는 유형 및 도메인 중에서 고유해야 합니다.

Domains are useful for abstracting common constraints on fields into a single location for maintenance. 예를 들어 여러 테이블에 이메일 주소 열이 포함될 수 있으며, 모두 주소 구문을 확인하기 위해 동일한 CHECK 제약 조건이 필요합니다. 각 테이블의 제약 조건을 개별적으로 설정하는 대신 도메인을 정의하세요.

도메인을 생성하려면 다음이 있어야 합니다.USAGE기본 유형에 대한 권한.

매개변수

name

생성될 스포츠 토토 베트맨의 이름(선택적으로 스키마 한정).

data_type

스포츠 토토 베트맨의 기본 데이터 유형. This can include array specifiers.

collation

스포츠 토토 베트맨에 대한 선택적 데이터 정렬. 데이터 정렬이 지정되지 않은 경우 스포츠 토토 베트맨은 기본 데이터 유형과 동일한 데이터 정렬 동작을 갖습니다. The underlying type must be collatable ifCOLLATEis specified.

DEFAULTexpression

TheDEFAULT절은 도메인 데이터 유형의 열에 대한 기본값을 지정합니다. 값은 변수가 없는 표현식입니다(그러나 하위 쿼리는 허용되지 않음). 기본 표현식의 데이터 유형은 도메인의 데이터 유형과 일치해야 합니다. 기본값이 지정되지 않은 경우 기본값은 null 값입니다.

기본 표현식은 열의 값을 지정하지 않는 모든 삽입 작업에 사용됩니다. 특정 열에 대해 기본값이 정의되면 도메인과 연결된 모든 기본값이 재정의됩니다. 결과적으로 도메인 기본값은 기본 데이터 유형과 관련된 모든 기본값을 재정의합니다.

CONSTRAINT제약_이름

제약조건에 대한 선택적 이름입니다. If not specified, the system generates a name.

NOT NULL

이 스포츠 토토 베트맨의 값은 null이 될 수 없습니다(단, 아래 참고 사항 참조).

NULL

Values of this domain are allowed to be null. 이것이 기본값입니다.

이 절은 비표준 SQL 데이터베이스와의 호환성만을 위한 것입니다. 새로운 애플리케이션에서는 사용이 권장되지 않습니다.

확인(expression)

CHECK절은 무결성 제약 조건을 지정하거나 도메인 값이 충족해야 하는 테스트를 지정합니다. Each constraint must be an expression producing a Boolean result. 키워드를 사용해야 합니다.VALUE테스트 중인 값을 참조합니다. Expressions evaluating to TRUE or UNKNOWN succeed. If the expression produces a FALSE result, an error is reported and the value is not allowed to be converted to the domain type.

Currently,CHECK식은 하위 쿼리를 포함할 수 없으며 이외의 변수를 참조할 수 없습니다.VALUE.

When a domain has multipleCHECK제약조건은 이름의 알파벳순으로 테스트됩니다. (PostgreSQL9.5 이전 버전에서는 특정 실행 명령을 따르지 않았습니다.CHECK제약조건.)

Notes

스포츠 토토 베트맨 제약조건, 특히NULL이 아님, are checked when converting a value to the domain type. It is possible for a column that is nominally of the domain type to read as null despite there being such a constraint. 예를 들어 도메인 열이 외부 조인의 Null 허용 쪽에 있는 경우 외부 조인 쿼리에서 이런 일이 발생할 수 있습니다. 좀 더 미묘한 예는 다음과 같습니다.

INSERT INTO 탭(domcol) VALUES ((SELECT domcol FROM tab WHERE false));

빈 스칼라 하위 SELECT는 스포츠 토토 베트맨 유형으로 간주되는 null 값을 생성하므로 추가 제약 조건 확인이 적용되지 않으며 삽입이 성공합니다.

It is very difficult to avoid such problems, because of SQL's general assumption that a null value is a valid value of every data type. 따라서 가장 좋은 방법은 null 값이 허용되도록 도메인의 제약 조건을 설계한 다음 열을 적용하는 것입니다.NOT NULL스포츠 토토 베트맨 유형을 직접적으로 제한하지 않고 필요에 따라 스포츠 토토 베트맨 유형의 열로 제한합니다.

PostgreSQLassumes thatCHECK제약조건의 조건은 변경할 수 없습니다. 즉, 동일한 입력 값에 대해 항상 동일한 결과를 제공합니다. 이 가정은 조사를 정당화하는 것입니다.CHECK값이 스포츠 토토 베트맨 유형으로 처음 변환될 때만 제한되며 다른 경우에는 제한되지 않습니다. (이것은 본질적으로 테이블 처리와 동일합니다.CHECK제약조건, 다음에 설명된 대로섹션 5.4.1.)

이 가정을 깨는 일반적인 방법의 예는 다음에서 사용자 정의 함수를 참조하는 것입니다.CHECK표현식을 입력한 다음 해당 함수의 동작을 변경합니다.PostgreSQL이를 허용하지 않지만 현재 위반하는 도메인 유형의 저장된 값이 있는지 여부는 알 수 없습니다.CHECK제약. 이로 인해 후속 데이터베이스 덤프 및 복원이 실패하게 됩니다. 이러한 변경을 처리하는 데 권장되는 방법은 제약 조건을 삭제하는 것입니다(스포츠 토토 베트맨 변경), 함수 정의를 조정하고 제약 조건을 다시 추가하여 저장된 데이터와 비교하여 다시 확인합니다.

Examples

This example creates theus_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
);

호환성

명령CREATE DOMAINconforms to the SQL standard.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요this form문서 문제를 보고합니다.