일반적으로 구독자의 테이블은 게시자 테이블과 동일하게 정의됩니다. 따라서 게시자 테이블에 다음이 있는 경우윈 토토된 열그러면 구독자 테이블은 일치하는 윈 토토 열을 갖게 됩니다. 이 경우 항상 구독자 테이블 윈 토토 열 값이 사용됩니다.
예를 들어, 구독자 테이블 윈 토토 열 값은 구독자 열 계산에서 나온다는 점을 아래 참고하세요.
/* pub # */ CREATE TABLE tab_gen_to_gen (a int, b int는 항상 (a + 1) 저장됨으로 윈 토토됨); /* pub # */ INSERT INTO tab_gen_to_gen VALUES (1),(2),(3); /* pub # */ 테이블용 출판물 윈 토토 pub1 tab_gen_to_gen; /* pub # */ SELECT * FROM tab_gen_to_gen; | 비 ---+--- 1 | 2 2 | 3 3 | 4 (3열) /* sub # */ CREATE TABLE tab_gen_to_gen (a int, b int GENERATED ALWAYS AS (a * 100) STORED); /* sub # */ CREATE SUBSCRIPTION sub1 CONNECTION 'dbname=test_pub' PUBLICATION pub1; /* 하위 # */ SELECT * from tab_gen_to_gen; | 비 ---+---- 1 | 100 2 | 200 3 | 300 (3행)
사실 버전 18.0 이전에는 논리적 복제가 게시되지 않았습니다.윈 토토됨열 전혀.
그러나 윈 토토된 열을 일반 열로 복제하는 것이 때때로 바람직할 수 있습니다.
이 기능은 출력 플러그인을 통해 PostgreSQL이 아닌 데이터베이스에 데이터를 복제할 때, 특히 대상 데이터베이스가 윈 토토된 열을 지원하지 않는 경우 유용할 수 있습니다.
윈 토토된 열은 기본적으로 게시되지 않지만 사용자는 일반 열과 마찬가지로 저장된 생성 열을 게시하도록 선택할 수 있습니다.
이를 수행하는 방법에는 두 가지가 있습니다:
설정출판매개변수publish_generated_columns에저장됨. 이는 게시 테이블의 현재 및 향후 저장 생성 열을 게시하도록 PostgreSQL 논리적 복제에 지시합니다.
테이블 지정PostgreSQL : 문서 : 개발 : 29.5. 열 젠 토토저장된 윈 토토 열이 게시될지 명시적으로 지정합니다.
어떤 테이블 열이 게시될지 결정할 때 열 목록이 우선순위를 가지며,publish_generated_columns매개변수.
다음 표는 논리적 복제와 관련된 윈 토토된 열이 있을 때의 동작을 요약합니다. 윈 토토된 열 게시가 활성화되지 않은 경우와 활성화된 경우에 대한 결과가 표시됩니다.
표 29.2. 복제 결과 요약
| 윈 토토된 열을 게시하시겠습니까? | 게시자 테이블 열 | 구독자 테이블 열 | 결과 |
|---|---|---|---|
| 아니요 | 윈 토토됨 | 윈 토토됨 | 게시자 테이블 열이 복제되지 않았습니다. 구독자 테이블 생성 열 값을 사용하세요. |
| 아니요 | 윈 토토됨 | 일반 | 게시자 테이블 열이 복제되지 않았습니다. 구독자 테이블 일반 열 기본값을 사용합니다. |
| 아니요 | 윈 토토됨 | --누락-- | 게시자 테이블 열이 복제되지 않았습니다. 아무 일도 일어나지 않습니다. |
| 예 | 윈 토토됨 | 윈 토토됨 | 오류. 지원되지 않습니다. |
| 예 | 윈 토토됨 | 일반 | 게시자 테이블 열 값이 구독자 테이블 열에 복제됩니다. |
| 예 | 윈 토토됨 | --누락-- | 오류. 열이 구독자 테이블에서 누락된 것으로 보고됩니다. |
동일한 테이블이 다른 열 목록으로 게시된 여러 게시로 구성된 구독은 현재 지원되지 않습니다. 참조PostgreSQL : 문서 : 개발 : 29.5. 열 젠 토토.
한 게시가 윈 토토된 열을 게시하는 반면 동일한 구독의 다른 게시가 동일한 테이블에 대해 윈 토토된 열을 게시하지 않는 경우 이와 동일한 상황이 발생할 수 있습니다.
구독자가 18 이전 릴리스인 경우 게시자에 정의되어 있더라도 초기 테이블 동기화는 윈 토토된 열을 복사하지 않습니다.