CREATE PUBLICATION

CREATE PUBLICATION — 새 발행 정의

요약

CREATE PUBLICATION 이름
    [ FOR TABLE [ ONLY ] 테이블이름 [ * ] [, ...]
      | FOR ALL TABLES ]
    [ WITH ( 발행_매개변수 [= ] [, ... ] ) ]

설명

CREATE PUBLICATION 명령은 현재 데이터베이스에서 새 발행을 만든다. 이 발행 이름은 데이터베이스 내에서 유일해야 한다.

발행이란 논리 복제에서 사용할 그 대상 테이블 목록이다. 논리 복제 발행에 대한 설명은 31.1절에서 하고 있다.

매개 변수

이름

새로 만들 발행 이름.

FOR TABLE

발행에 포함할 테이블 목록. 테이블 이름 앞에 ONLY 키워드를 추가하면, 그 테이블의 하위 테이블을 포함하지 않고 그 테이블만 대상으로 하고, ONLY 키워드가 없으면 그 테이블 포함, 하위 테이블들도 모두 발행 대상이 된다. 선택적으로 가독성을 높이기 위해 * 문자를 추가해서, 하위 테이블 모두를 포함한다고 할 수도 있다.

이 목록에 추가 될 수 있는 테이블은 일반 테이블 뿐이다. 임시 테이블, 언로그드 테이블, 외부 테이블, 구체화한 뷰, 일반 뷰, 파티션 상위 테이블 이 모두 발행 목록에 추가할 수 없다. 파티션 테이블인 경우는 그 하위 일반 테이블들을 대상으로 각각 추가해야 한다.

FOR ALL TABLES

해당 데이터베이스 내 모든 테이블(앞으로 만들어지는 테이블도 포함해서)을 발행 대상 테이블로 지정한다.

WITH ( 발행_매개변수 [= ] [, ... ] )

이 구문으로 발행 옵션을 설정한다. 사용할 수 있는 매개 변수는 다음과 같다:

publish (string)

어떤 DML 작업에 대해서 발행할 것인지를 지정한다. 사용할 수 있는 값은 insert, update, delete, truncate 네 가지며, 쉼표로 구분해서 여러 개 사용할 수 있다. 기본값은 모든 작업을 대상으로 하는 'insert, update, delete, truncate'.

참고

FOR TABLE, FOR ALL TABLES 두 옵션 모두 사용하지 않는다면, 발행 목록을 비워둔 채로 발행을 만든다. 이 방법은 나중에 필요한 테이블만 따로 추가하려고 할 때 유용하게 사용된다.

이 발행을 만든다고 바로 복제를 시작하지는 않는다. 향후 구독 서버에서 구독을 할 수 있는 발행 정보를 만드는 일만 한다.

발행을 만드려면, 해당 데이터베이스에 대해서 CREATE 권한이 있어야 한다. (슈퍼유저는 예외)

발행에 테이블을 추가하려면, 해당 테이블의 소유주와 이 명령을 실행하는 사용자가 같거나, 상위 권한이 있는 사용자여야 한다. FOR ALL TABLES 구문을 사용하는 경우는 슈퍼유저여야 한다.

UPDATE, DELETE 작업을 발행하는 테이블은 그 테이블 속성으로 REPLICA IDENTITY 속성이 활성화 되어 있어야 한다. 그렇지 않으면, 발행 목록에 포함될 수 없다.

발행 서버에서 있었던 INSERT ... ON CONFLICT 작업은 구독 서버로 그 작업의 결과 작업이 전달된다. 즉, INSERT 작업이 될 수도 있고, UPDATE 작업이 될 수도 있고, 아니면, 아에 아무 작업도 전달되지 않을 수 있다.

COPY ... FROM 작업은 INSERT 작업으로 바뀌어 전달된다.

DDL 구문은 발행되지 않는다.

예제

두 테이블의 모든 DML 작업에 대해서 발행 만들기:

CREATE PUBLICATION mypublication FOR TABLE users, departments;

모든 테이블의 모든 DML 작업에 대해서 발행 만들기:

CREATE PUBLICATION alltables FOR ALL TABLES;

한 테이블의 INSERT 작업에 대해서만 발행 만들기:

CREATE PUBLICATION insert_only FOR TABLE mydata
    WITH (publish = 'insert');

호환성

CREATE PUBLICATION 구문은 PostgreSQL 확장 기능이다.

관련 항목

ALTER PUBLICATION, DROP PUBLICATION