이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다4A-토토 베이3_A-토토 베이107버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

29.5. 열 토토 베이#

각 게시물은 선택적으로 가입자에게 복제되는 각 테이블의 열을 선택적으로 지정할 수 있습니다. 가입자 쪽의 표에는 최소한 게시 된 열이 있어야합니다. 열 토토 베이이 지정되지 않으면 게시자의 모든 열이 복제됩니다. 보다출판물 만들기구문에 대한 자세한 내용.

열의 선택은 행동 또는 성능 이유를 기반으로 할 수 있습니다. 그러나 보안을 위해이 기능에 의존하지 마십시오. 악의적 인 가입자는 구체적으로 게시되지 않은 열에서 데이터를 얻을 수 있습니다. 보안이 고려 사항이라면 게시자 측에서 보호를 적용 할 수 있습니다.

열 토토 베이이 지정되지 않으면 나중에 테이블에 추가 된 열이 자동으로 복제됩니다. 즉, 모든 열을 지명하는 열 토토 베이이 있으면 열 토토 베이이 전혀없는 것과 다릅니다.

열 토토 베이에는 간단한 열 참조 만 포함 할 수 있습니다. 토토 베이의 열 순서는 보존되지 않습니다.

생성 열은 열 토토 베이에 지정할 수도 있습니다. 이를 통해 출판물 매개 변수에 관계없이 생성 된 열을 게시 할 수 있습니다.publish_generated_columns. 보다PostgreSQL : 문서 : 18 : 29.6. 스포츠 토토 베이 베트맨 된 열 복제자세한 내용.

출판물이 게시 될 때 열 토토 베이 지정스키마 테이블지원되지 않습니다.

분할 된 테이블의 경우 게시 매개 변수publish_via_partition_root사용되는 열 토토 베이을 결정합니다. 만약에publish_via_partition_rootistrue, 루트 파티션 테이블의 열 토토 베이이 사용됩니다. 그렇지 않으면, ifpublish_via_partition_rootis거짓(기본값) 각 파티션의 열 토토 베이이 사용됩니다.

출판물이 게시 된 경우업데이트또는삭제작동, 모든 열 토토 베이은 테이블의 복제 아이덴티티 열을 포함해야합니다 (참조복제 아이덴티티). 출판물이 전용으로 게시하는 경우삽입운영, 열 목록은 복제 아이덴티티 열을 생략 할 수 있습니다.

열 토토 베이에 영향을 미치지 않습니다Truncate명령.

초기 데이터 동기화 중에 게시 된 열만 복사합니다. 그러나 가입자가 15 세 이전의 릴리스에서 온 경우, 초기 데이터 동기화 중에 테이블의 모든 열이 복사되어 열 토토 베이을 무시합니다. 가입자가 18 세 이전에 릴리스에서 온 경우 초기 테이블 동기화가 게시자에 정의되어 있어도 생성 된 열을 복사하지 않습니다.

경고 : 여러 간행물에서 열 토토 베이을 결합

현재 동일한 테이블이 다른 열 토토 베이으로 게시 된 여러 간행물로 구성된 구독을 지원하지 않습니다.구독 생성그러한 구독을 생성하는 데 방해가되지만 구독이 생성 된 후 게시면에 열 토토 베이을 추가하거나 변경하여 해당 상황에 도달 할 수 있습니다..

이것은 이미 구독 한 간행물에서 테이블의 열 토토 베이을 변경하는 것을 의미합니다. 가입자쪽에 오류가 발생할 수 있습니다.

구독 이이 문제의 영향을받는 경우 복제 재개를 재개하는 유일한 방법은 출판면에서 열 토토 베이 중 하나를 조정하여 모두 일치하도록하는 것입니다. 그런 다음 구독을 재창조하거나 사용하십시오구독 변경 ... 출판 삭제문제가되는 간행물 중 하나를 제거하고 다시 추가하려면

29.5.1. 예#

테이블 만들기T1다음 예에서 사용하려면

/ * pub # */ 테이블 생성 t1 (id int, a 텍스트, b 텍스트, c 텍스트, d 텍스트, 텍스트, 기본 키 (id));

출판물 만들기P1. 열 토토 베이은 표에 대해 정의됩니다T1복제 할 열의 수를 줄입니다. 열 토토 베이의 열 이름 순서는 중요하지 않습니다.

/ * pub # */ 표 T1 (id, b, a, d);에 대한 출판물 생성 P1;

PSQL각 간행물에 대한 열 토토 베이 (정의 된 경우)을 표시하는 데 사용될 수 있습니다.

/ * pub # */ \ drp+
                               간행물 P1
  소유자 | 모든 테이블 | 삽입 | 업데이트 | 삭제 | 잘린 | 루트를 통해
-------------------+---------+--------+----------------------------------------------------------------------
 Postgres | f | t | t | t | t | 에프
테이블 :
    "public.t1"(id, a, b, d)

PSQL각 테이블의 열 토토 베이 (정의 된 경우)을 표시하는 데 사용할 수 있습니다.

/ * pub # */ \ d t1
                 "public.t1"테이블
 열 |  유형 | Collation | 무효 | 기본
--------+--------+-------------------------------
 id | 정수 |           | NOL NULL |
 A | 텍스트 |           |          |
 B | 텍스트 |           |          |
 C | 텍스트 |           |          |
 d | 텍스트 |           |          |
 e | 텍스트 |           |          |
인덱스 :
    "T1_PKEY"기본 키, BTREE (ID)
간행물 :
    "P1"(ID, A, B, D)

가입자 노드에서 테이블 작성T1지금은 게시자 테이블에 있던 열의 하위 집합 만 필요합니다T1그리고 구독도 생성S1출판물 구독P1.

/ * sub # */ 테이블 생성 t1 (id int, b 텍스트, 텍스트, d 텍스트, 기본 키 (id));
/ * sub # */ 구독 생성 S1
/ * sub - */ connection 'host = localhost dbname = test_pub application_name = s1'
/ * sub - */ publication p1;

게시자 노드에서 표에 일부 행을 삽입T1.

/ * pub # */ t1 값에 삽입 ( 'A-1', 'B-1', 'C-1', 'D-1', 'E-1');
/ * pub # */ t1 값에 삽입 (2, 'a-2', 'b-2', 'c-2', 'd-2', 'e-2');
/ * pub # */ t1 값에 삽입 (3, 'a-3', 'b-3', 'c-3', 'd-3', 'e-3');
/ * pub # */ select *에서 id로 T1 Order에서;
 id |  A |  B |  C |  d |  이자형
----+-----+-----+-----+-----+-----
  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복제되었습니다.

/ * sub # */ select *에서 id로 T1 Order;
 id |  B |  A |  디
----+-----+-----+-----
  1 | B-1 | A-1 | D-1
  2 | B-2 | A-2 | D-2
  3 | B-3 | A-3 | D-3
(3 줄)