CREATE FOREIGN TABLE — 새로운 외부 토토 정의
외부 토토 생성 [ 존재하지 않는 경우 ]토토_이름( [ {열_이름데이터_유형[ 옵션 (옵션'값' [, ... ] ) ] [ 대조조합] [column_constraint[ ... ] ] |table_constraint| 좋아요source_table[like_option... ] [, ... ] ] ) [ 상속(parent_table[, ... ] ) ] 서버서버_이름[ 옵션 (옵션'값' [, ... ] ) ] 외부 토토 생성 [ 존재하지 않는 경우 ]토토_이름파티션parent_table[ ( {열_이름[ 옵션 포함 ] [column_constraint[ ... ] ] |table_constraint[, ... ] ) ] 가치의 경우partition_bound_spec| 기본값 서버서버_이름[ 옵션(옵션'값' [, ... ] ) ] 어디에서column_constraint다음과 같습니다:[ 제약제약조건_이름] NULL이 아님 [상속 없음] | NULL | 확인(표현) [ 상속 없음 ] | 기본값109PostgreSQL: 문서: 18: 외부 토토 생성57| 항상 다음과 같이 생성됩니다. (세대_expr) [ 저장됨 | 가상 ]그리고table_constraint다음과 같습니다:[ 제약제약_이름] NULL이 아님컬럼_이름[ 상속 없음 ] | 확인(표현) [ 상속 없음 ]그리고like_option다음은:포함 | 제외 댓글 | 제약 | 기본값 | 생성됨 | 통계 | 모두그리고partition_bound_spec다음과 같습니다:IN (partition_bound_expr[, ...] ) | (에서partition_bound_expr| 최소값 | 최대값 [, ...] ) 받는 사람(partition_bound_expr| 최소값 | MAXVALUE [, ...] ) | 와( 모듈러스numeric_literal, 나머지numeric_literal)
외부 토토 생성현재 데이터베이스에 새로운 외부 테이블을 생성합니다. 테이블은 명령을 실행하는 사용자가 소유하게 됩니다.
스키마 이름이 제공된 경우(예:외부 토토 myschema.mytable 생성 ...) 그러면 지정된 스키마에 테이블이 생성됩니다. 그렇지 않으면 현재 스키마에 생성됩니다. 외부 테이블의 이름은 동일한 스키마에 있는 다른 관계(테이블, 시퀀스, 인덱스, 뷰, 구체화된 뷰 또는 외부 테이블)의 이름과 구별되어야 합니다.
외부 토토 생성또한 외부 토토의 한 행에 해당하는 복합 유형을 나타내는 데이터 유형을 자동으로 생성합니다. 따라서 외부 토토은 동일한 스키마의 기존 데이터 유형과 동일한 이름을 가질 수 없습니다.
만약파티션절이 지정되면 테이블은 다음의 파티션으로 생성됩니다.parent_table지정된 범위로.
외부 테이블을 생성하려면 다음이 있어야 합니다.사용외부 서버에 대한 권한 및사용테이블에 사용된 모든 열 유형에 대한 권한.
존재하지 않는 경우같은 이름의 관계가 이미 존재하는 경우 오류를 발생시키지 마십시오. 이 경우 통지가 발행됩니다. 기존 관계가 생성되었을 관계와 유사하다는 보장은 없습니다.
토토_이름생성될 토토의 이름(선택적으로 스키마 한정).
컬럼_이름새 토토에 생성될 열의 이름.
데이터_유형열의 데이터 유형. 여기에는 배열 지정자가 포함될 수 있습니다. 지원되는 데이터 유형에 대한 자세한 내용은PostgreSQL, 참조PostgreSQL : 문서 : 18 : 8 장 데이터 사설 토토 사이트.
콜레이트조합그콜레이트절은 열에 데이터 정렬을 할당합니다(조합 가능한 데이터 유형이어야 함). 지정하지 않으면 열 데이터 유형의 기본 데이터 정렬이 사용됩니다.
상속됨(parent_table [, ... ] )선택사항상속절은 새 외부 테이블이 모든 열을 자동으로 상속하는 테이블 목록을 지정합니다. 상위 테이블은 일반 테이블이거나 외부 테이블일 수 있습니다. 유사한 형태를 참조하십시오.토토 생성자세한 내용은.
파티션parent_table가치의 경우partition_bound_spec| 기본값이 양식은 지정된 파티션 경계 값을 사용하여 주어진 상위 테이블의 파티션으로 외부 테이블을 생성하는 데 사용할 수 있습니다. 유사한 형태를 참조하십시오.토토 생성자세한 내용을 확인하세요. 현재는 상위 테이블의 파티션으로 외부 테이블을 생성하는 것이 허용되지 않습니다.고유상위 토토의 인덱스입니다. (또한 참조테이블 연결 파티션 변경.)
좋아요source_table [ like_option ... ]그좋아요절은 새 토토이 모든 열 이름, 해당 데이터 유형 및 null이 아닌 제약 조건을 자동으로 복사하는 토토을 지정합니다.
달리상속, 생성이 완료된 후 새 토토과 원본 토토이 완전히 분리됩니다. 원본 토토에 대한 변경 사항은 새 토토에 적용되지 않으며 원본 토토 스캔에 새 토토의 데이터를 포함할 수 없습니다.
또한 다름상속, 복사된 열 및 제약 조건좋아요비슷한 이름의 열 및 제약 조건과 병합되지 않습니다. 동일한 이름이 명시적으로 지정되었거나 다른 이름으로 지정된 경우좋아요절, 오류가 발생했습니다.
선택사항like_option절은 복사할 원본 토토의 추가 속성을 지정합니다. 지정포함속성을 복사하여 지정함제외속성을 생략합니다.제외기본값입니다. 동일한 종류의 객체에 대해 여러 사양을 지정한 경우 마지막 사양이 사용됩니다. 사용 가능한 옵션은 다음과 같습니다.
댓글 포함복사된 열 및 제약 조건에 대한 설명이 복사됩니다. 기본 동작은 주석을 제외하는 것입니다. 그러면 새 테이블의 복사된 열과 제약 조건에 주석이 없습니다.
제약조건 포함확인제약조건이 복사됩니다. 열 제약 조건과 토토 제약 조건 간에는 구별이 없습니다. null이 아닌 제약 조건은 항상 새 토토에 복사됩니다.
기본값 포함복사된 열 정의에 대한 기본 표현식이 복사됩니다. 그렇지 않으면 기본 표현식이 복사되지 않아 새 테이블의 복사된 열에 기본값이 null이 됩니다. 다음과 같은 데이터베이스 수정 함수를 호출하는 기본값 복사에 유의하세요.다음값, 원본 토토과 새 토토 사이에 기능적 연결을 생성할 수 있습니다.
생성된 항목 포함복사된 열 정의의 모든 생성 표현식이 복사됩니다. 기본적으로 새 열은 일반 기본 열이 됩니다.
통계 포함확장 통계가 새 토토에 복사됩니다.
모두 포함모두 포함은 사용 가능한 모든 개별 옵션을 선택하는 축약형입니다. (개인별로 작성하는 것이 유용할 수 있음)제외다음 절모두 포함일부 특정 옵션을 제외하고 모두 선택합니다.)
제약제약_이름열 또는 테이블 제약조건에 대한 선택적 이름입니다. 제약 조건을 위반하면 오류 메시지에 제약 조건 이름이 표시되므로 다음과 같은 제약 조건 이름이 표시됩니다.col은 양수여야 합니다.클라이언트 애플리케이션에 유용한 제약 정보를 전달하는 데 사용할 수 있습니다. (공백이 포함된 제약 조건 이름을 지정하려면 큰따옴표가 필요합니다.) 제약 조건 이름을 지정하지 않으면 시스템에서 이름을 생성합니다.
NULL이 아님[ 상속 없음 ]이 열은 null 값을 포함할 수 없습니다.
다음으로 표시된 제약조건상속 없음하위 토토에 전파되지 않습니다.
NULL열에는 null 값이 포함될 수 있습니다. 이것이 기본값입니다.
이 절은 비표준 SQL 데이터베이스와의 호환성을 위해서만 제공됩니다. 새로운 애플리케이션에서는 사용이 권장되지 않습니다.
확인(표현) [ 상속 없음 ]그확인절은 외부 테이블의 각 행이 충족할 것으로 예상되는 부울 결과를 생성하는 표현식을 지정합니다. 즉, 표현식은 외부 테이블의 모든 행에 대해 FALSE가 아닌 TRUE 또는 UNKNOWN을 생성해야 합니다. 열 제약 조건으로 지정된 검사 제약 조건은 해당 열의 값만 참조해야 하는 반면, 테이블 제약 조건에 나타나는 표현식은 여러 열을 참조할 수 있습니다.
현재,확인식은 하위 쿼리를 포함할 수 없으며 현재 행의 열 이외의 변수를 참조할 수도 없습니다. 시스템 열토토로이드참조될 수 있지만 다른 시스템 열은 참조될 수 없습니다.
다음으로 표시된 제약조건상속 없음하위 토토에 전파되지 않습니다.
기본값default_expr그기본값절은 열 정의가 나타나는 열에 대한 기본 데이터 값을 할당합니다. 값은 변수가 없는 표현식입니다. 현재 테이블의 다른 열에 대한 하위 쿼리 및 상호 참조는 허용되지 않습니다. 기본 표현식의 데이터 유형은 열의 데이터 유형과 일치해야 합니다.
기본 표현식은 열의 값을 지정하지 않는 모든 삽입 작업에 사용됩니다. 열에 대한 기본값이 없으면 기본값은 null입니다.
항상 다음과 같이 생성됨(세대_expr) [ 저장됨 | 가상 ]이 절은 열을 다음과 같이 생성합니다.생성된 열. 해당 열에 쓸 수 없으며 읽을 때 지정된 표현식의 결과가 반환됩니다.
언제가상이 지정되면 열을 읽을 때 열이 계산됩니다. (외부 데이터 래퍼는 새 행에서 이를 null 값으로 보고 이를 null 값으로 저장하거나 완전히 무시하도록 선택할 수 있습니다.) 언제저장됨이 지정되면 쓰기 시 열이 계산됩니다. (계산된 값은 저장을 위해 외부 데이터 래퍼에 제공되며 읽을 때 반환되어야 합니다.)가상기본값입니다.
생성 표현식은 테이블의 다른 열을 참조할 수 있지만 다른 생성된 열은 참조할 수 없습니다. 사용되는 모든 함수와 연산자는 변경할 수 없어야 합니다. 다른 테이블에 대한 참조는 허용되지 않습니다.
서버_이름외부 테이블에 사용할 기존 외부 서버의 이름. 서버 정의에 대한 자세한 내용은 다음을 참조하세요.서버 생성.
옵션(옵션 '값' [, ...] )새 외부 테이블 또는 해당 열 중 하나와 연결되는 옵션입니다. 허용되는 옵션 이름과 값은 각 외부 데이터 래퍼마다 다르며 외부 데이터 래퍼의 유효성 검사기 기능을 사용하여 유효성이 검사됩니다. 중복된 옵션 이름은 허용되지 않습니다. 단, 테이블 옵션과 열 옵션의 이름이 같아도 괜찮습니다.
외부 테이블에 대한 제약 조건(예:확인또는NULL이 아님절)은 코어에 의해 시행되지 않습니다.PostgreSQL시스템과 대부분의 외부 데이터 래퍼도 이를 시행하려고 시도하지 않습니다. 즉, 제약조건은 단순히 참이라고 가정됩니다. 이러한 적용은 외부 테이블을 통해 삽입되거나 업데이트된 행에만 적용되고 원격 서버에서 직접 수정되는 등의 다른 방법으로 수정된 행에는 적용되지 않으므로 별 의미가 없습니다. 대신, 외부 테이블에 첨부된 제약 조건은 원격 서버에 의해 시행되는 제약 조건을 나타내야 합니다.
일부 특수 목적의 외부 데이터 래퍼는 액세스하는 데이터에 대한 유일한 액세스 메커니즘일 수 있으며, 이 경우 외부 데이터 래퍼 자체가 제약 조건 시행을 수행하는 것이 적절할 수 있습니다. 그러나 문서에 그렇게 명시되어 있지 않은 한 래퍼가 그렇게 한다고 가정해서는 안 됩니다.
하지만PostgreSQL외부 테이블에 제약 조건을 적용하려고 시도하지 않으며 쿼리 최적화를 위해 제약 조건이 올바른 것으로 가정합니다. 선언된 제약 조건을 충족하지 않는 행이 외부 테이블에 표시되면 테이블에 대한 쿼리에서 오류나 잘못된 응답이 생성될 수 있습니다. 제약조건 정의가 현실과 일치하는지 확인하는 것은 사용자의 책임입니다.
외부 테이블이 분할된 테이블의 분할로 사용되는 경우 해당 내용이 분할 규칙을 충족해야 한다는 암시적 제약 조건이 있습니다. 다시 말하지만, 이것이 사실인지 확인하는 것은 사용자의 책임이며, 이는 원격 서버에 일치하는 제약 조건을 설치하여 가장 잘 수행됩니다.
외부 테이블 파티션을 포함하는 파티션된 테이블 내에서,업데이트파티션 키 값을 변경하면 외부 데이터 래퍼가 튜플 라우팅을 지원하는 경우 행이 로컬 파티션에서 외부 테이블 파티션으로 이동될 수 있습니다. 그러나 현재는 외부 테이블 파티션에서 다른 파티션으로 행을 이동할 수 없습니다. 안업데이트이 작업을 수행해야 하는 작업은 원격 서버에서 적절하게 시행한다고 가정할 때 분할 제약으로 인해 실패할 것입니다.
생성된 열에도 비슷한 고려사항이 적용됩니다. 저장된 생성 열은 로컬에서 삽입 또는 업데이트 시 계산됩니다.포스트그레SQL서버가 외부 데이터 저장소에 쓰기 위해 외부 데이터 래퍼에 전달되었지만 외부 테이블의 쿼리가 생성 표현식과 일치하는 저장된 생성 열에 대한 값을 반환하도록 강제되지는 않습니다. 다시 말하지만 이로 인해 잘못된 쿼리 결과가 발생할 수 있습니다.
외부 토토 생성영화, 서버를 통해 액세스됩니다.film_server:
외국 테이블 영화 만들기(
코드 문자(5)는 NULL이 아닙니다.
제목 varchar(40) NOT NULL,
정수가 NULL이 아니었나요?
date_prod 날짜,
종류 varchar(10),
len 간격 시간에서 분까지
)
서버 film_server;
외부 토토 생성measurement_y2016m07, 서버를 통해 액세스됩니다.서버_07, 범위 분할 테이블의 파티션으로측정:
외부 토토 생성 측정_y2016m07
('2016-07-01')부터 ('2016-08-01')까지의 값에 대한 측정 부분
서버 server_07;
그외부 토토 생성명령은 대체로 다음과 일치합니다.SQL표준; 그러나, 마찬가지로토토 생성, NULL제약조건 및 열이 없는 외부 테이블이 허용됩니다. 열 기본값을 지정하는 기능도 있습니다.포스트그레SQL확장. 다음으로 정의된 형식의 테이블 상속포스트그레SQL는 비표준입니다.좋아요이 명령에서 지원되는 절은 비표준입니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.