각 게시는 선택적으로 각 테이블의 어떤 열이 구독자에게 복제되는지 지정할 수 있습니다. 구독자 측 테이블에는 최소한 게시된 모든 열이 있어야 합니다. 열 젠 토토을 지정하지 않으면 게시자의 모든 열이 복제됩니다. 참조출판물 작성구문에 대한 자세한 내용은.
열 선택은 동작 또는 성능 이유를 기반으로 할 수 있습니다. 그러나 보안을 위해 이 기능에 의존하지 마십시오. 악의적인 구독자가 특별히 게시되지 않은 열에서 데이터를 얻을 수 있습니다. 보안이 고려되는 경우 게시자 측에서 보호 조치를 적용할 수 있습니다.
열 젠 토토이 지정되지 않으면 나중에 테이블에 추가된 모든 열이 자동으로 복제됩니다. 즉, 모든 열의 이름을 지정하는 열 젠 토토이 있는 것은 열 젠 토토이 전혀 없는 것과는 다릅니다.
열 젠 토토은 단순 열 참조만 포함할 수 있습니다. 젠 토토의 열 순서는 유지되지 않습니다.
생성된 열은 열 젠 토토에서도 지정할 수 있습니다. 이를 통해 게시 매개변수에 관계없이 생성된 열을 게시할 수 있습니다.publish_generated_columns. 참조윈 토토 PostgreSQL : 문서 : 개발 : 2009.6. 생성 된 열 복제자세한 내용은.
게시물도 게시할 때 열 젠 토토 지정스키마 테이블의 경우지원되지 않습니다.
파티션된 테이블의 경우 게시 매개변수publish_via_partition_root어떤 열 젠 토토이 사용되는지 결정합니다. 만일publish_via_partition_root이다참, 루트로 파티션을 나눈 테이블의 열 젠 토토이 사용됩니다. 그렇지 않은 경우, 만약publish_via_partition_rootis거짓(기본값) 각 파티션의 열 젠 토토이 사용됩니다.
간행물이 출판되는 경우업데이트또는삭제작업, 모든 열 젠 토토에는 테이블의 복제본 ID 열이 포함되어야 합니다(참조복제본 ID). 출판물이 출판만 된 경우삽입작업을 수행하면 열 목록에서 복제본 ID 열이 생략될 수 있습니다.
열 목록은 다음에 영향을 미치지 않습니다.잘라내기명령.
초기 데이터 동기화 중에는 게시된 열만 복사됩니다. 그러나 구독자가 15 이전 릴리스인 경우 초기 데이터 동기화 중에 테이블의 모든 열이 복사되고 열 목록은 무시됩니다. 구독자가 18 이전 릴리스의 경우 게시자에 정의되어 있더라도 초기 테이블 동기화에서는 생성된 열을 복사하지 않습니다.
동일한 테이블이 다른 열 목록으로 게시된 여러 게시로 구성된 구독은 현재 지원되지 않습니다.구독 작성이러한 구독 생성을 허용하지 않지만 구독이 생성된 후 게시 측에서 열 젠 토토을 추가하거나 변경하면 이러한 상황이 발생할 수 있습니다.
이미 구독 중인 발행물에 대한 테이블의 열 젠 토토을 변경하면 구독자 측에서 오류가 발생할 수 있음을 의미합니다.
구독이 이 문제의 영향을 받는 경우 복제를 재개하는 유일한 방법은 발행 측의 열 목록 중 하나를 조정하여 모두 일치하도록 하는 것입니다. 그런 다음 구독을 다시 생성하거나 다음을 사용하세요.구독 변경 ... 출판물 삭제문제가 있는 출판물 중 하나를 제거하고 다시 추가합니다.
테이블 생성t1다음 예에서 사용됩니다.
/* pub # */ CREATE TABLE t1(id int, a text, b text, c text, d text, e text, PRIMARY KEY(id));
간행물 작성p1. 테이블에 대한 열 젠 토토이 정의되었습니다.t1복제될 열 수를 줄입니다. 열 젠 토토에서 열 이름의 순서는 중요하지 않습니다.
/* pub # */ 테이블 t1(id, b, a, d)에 대한 출판 p1 생성;
psql각 출판물에 대한 열 젠 토토(정의된 경우)을 표시하는 데 사용할 수 있습니다.
/* 술집 # */ \dRp+
출판물 p1
소유자 | 모든 테이블 | 모든 시퀀스 | 삽입물 | 업데이트 | 삭제 | 잘림 | 생성된 열 | 루트를 통해
----------+------------+---------------+---------+---------+---------+------------+------+------------
포스트그레스 | 에프 | 에프 | 티 | 티 | 티 | 티 | 없음 | 에프
테이블:
"public.t1"(id, a, b, d)
psql각 테이블의 열 젠 토토(정의된 경우)을 표시하는 데 사용할 수 있습니다.
/* 술집 # */ \d t1
테이블 "public.t1"
칼럼 | 유형 | 데이터 정렬 | 널 입력 가능 | 기본값
---------+---------+------------+----------+---------
아이디 | 정수 | | null이 아님 |
| 텍스트 | | |
비 | 텍스트 | | |
c | 텍스트 | | |
디 | 텍스트 | | |
전자 | 텍스트 | | |
인덱스:
"t1_pkey" 기본 키, btree(id)
출판물:
"p1"(id, a, b, d)
구독자 노드에서 테이블을 생성하십시오.t1이제 게시자 테이블에 있던 열의 하위 집합만 필요합니다t1, 구독도 생성s1간행물을 구독하는 사람p1.
/* sub # */ CREATE TABLE t1(id int, b text, a text, d text, PRIMARY KEY(id)); /* 하위 # */ 구독 만들기 s1 /* sub - */ CONNECTION 'host=localhost dbname=test_pub application_name=s1' /* 하위 - */ 출판물 p1;
게시자 노드에서 테이블에 일부 행을 삽입t1.
/* pub # */ INSERT INTO t1 VALUES(1, 'a-1', 'b-1', 'c-1', 'd-1', 'e-1'); /* pub # */ INSERT INTO t1 VALUES(2, 'a-2', 'b-2', 'c-2', 'd-2', 'e-2'); /* pub # */ INSERT INTO t1 VALUES(3, 'a-3', 'b-3', 'c-3', 'd-3', 'e-3'); /* pub # */ SELECT * FROM t1 ORDER BY id; 아이디 | | 비 | c | 디 | 전자 ----+------+------+-----+------+----- 1 | A-1 | b-1 | c-1 | d-1 | e-1 2 | A-2 | b-2 | c-2 | d-2 | e-2 3 | A-3 | b-3 | c-3 | d-3 | e-3 (3행)
게시물 열 젠 토토의 데이터만p1복제되었습니다.
/* 하위 # */ SELECT * FROM t1 ORDER BY id; 아이디 | 비 | | 디 ---+------+------+----- 1 | b-1 | A-1 | d-1 2 | b-2 | A-2 | d-2 3 | b-3 | A-3 | d-3 (3행)