すべてのプロダクト
Search
ドキュメントセンター

PolarDB:出版物の作成

最終更新日:May 31, 2024

CREATE PUBLICATIONは、現在のデータベースに新しいパブリケーションを追加します。

説明

CREATE PUBLICATIONは、現在のデータベースに新しいパブリケーションを追加します。 パブリケーション名は、現在のデータベース内の既存のパブリケーションの名前とは異なる必要があります。

パブリケーションとは、基本的には、データの変更が論理レプリケーションによってレプリケートされることを目的としたテーブルのグループです。

概要

出版名の作成
        [FOR TABLE [のみ] table_name [ * ] [, ...]
          | すべてのテーブルのために]
        [WITH ( publication_parameter [= value] [, ... ] ) ] 

パラメーター

name: 新しいパブリケーションの名前。

FOR TABLE: パブリケーションに追加するテーブルのリストを指定します。 テーブル名の前にONLYを指定した場合、そのテーブルのみがパブリケーションに追加されます。 ONLYが指定されていない場合、テーブルとそのすべての子孫テーブル (存在する場合) が追加されます。 必要に応じて、テーブル名の後に * を指定して、子孫テーブルが含まれることを明示的に示すことができます。 ただし、これはパーティションテーブルには適用されません。 パーティションテーブルのパーティションは、常に暗黙的にパブリケーションの一部と見なされるため、パブリケーションに明示的に追加されることはありません。

パブリケーションの一部にできるのは、永続ベーステーブルとパーティションテーブルだけです。 一時テーブル、未ログテーブル、外部テーブル、マテリアライズドビュー、および通常のビューをパブリケーションの一部にすることはできません。

パーティション分割テーブルがパブリケーションに追加されると、その既存のパーティションと将来のパーティションはすべて、パブリケーションの一部であると暗黙的に見なされます。 そのため、パーティションで直接実行される操作でさえ、その祖先が一部である出版物を介して公開されます。

FOR ALL TABLES: 将来作成されるテーブルを含む、データベース内のすべてのテーブルの変更をレプリケートするパブリケーションとしてパブリケーションをマークします。

WITH (publication_parameter [= value] [, ... ] ):

  • publish (string ): このパラメーターは、新しいパブリケーションによってサブスクライバーにパブリッシュされるDML操作を決定します。 値はカンマ区切りの操作リストです。 許可される操作は、insertupdatedeletetruncateです。 デフォルトではすべてのアクションを公開するため、このオプションのデフォルト値は 'insert, update, delete, truncate' です。

  • publish_via_partition_root (boolean ): このパラメーターは、パブリケーションに含まれるパーティションテーブル (またはそのパーティション) の変更を、実際に変更される個々のパーティションではなく、パーティションテーブルのIDとスキーマを使用してパブリッシュするかどうかを決定します。後者がデフォルトです。 これを有効にすると、変更を非パーティション分割テーブルまたは異なるパーティションのセットで構成されるパーティション分割テーブルにレプリケートできます。

    これを有効にすると、パーティションに対して直接実行されるTRUNCATE操作はレプリケートされません。

FOR TABLEFOR ALL TABLESも指定されていない場合、公開は空のテーブルセットで開始されます。 これは、テーブルを後で追加する場合に便利です。

パブリケーションの作成はレプリケーションを開始しません。 それは、将来の加入者のためのグループ化およびフィルタリングロジックのみを定義する。

パブリケーションを作成するには、呼び出し元のユーザーに、現在のデータベースに対するcreate権限が必要です。 (もちろん、スーパーユーザーはこのチェックをバイパスします。)

テーブルをパブリケーションに追加するには、呼び出し元のユーザーがテーブルの所有権を持っている必要があります。 FOR ALL TABLES句では、呼び出し元のユーザーがスーパーユーザーである必要があります。

UPDATEおよび /またはDELETE操作を発行するパブリケーションに追加されるテーブルには、REPLICA IDENTITYが定義されている必要があります。 そうでない場合、それらの操作はそれらのテーブルで許可されません。

挿入物のために... CONFLICTコマンドでは、パブリケーションはコマンドの結果の操作を公開します。 結果に応じて、INSERTまたはUPDATEとして公開されるか、まったく公開されない場合があります。

COPY... FROMコマンドは、INSERT操作として発行されます。

DDLoperationsは公開されません。

2つのテーブルですべての変更を公開するパブリケーションを作成します。

CREATE PUBLICATION mypublication FOR TABLEユーザー、部門;

すべてのテーブルのすべての変更を公開するパブリケーションを作成します。

すべてのテーブルの出版物alltablesを作成します。

1つのテーブルでINSERT操作のみを公開するパブリケーションを作成します。

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