CREATE PUBLICATION — 定义一个新的发布
CREATE PUBLICATION name
[ FOR TABLE [ ONLY ] table_name
[ * ] [, ...]
| FOR ALL TABLES ]
[ WITH ( publication_parameter
[= value
] [, ... ] ) ]
CREATE PUBLICATION
向当前数据库添加一个新的发布。 发布的名称必须与当前数据库中任何现有发布的名称不同。
发布本质上是一组表,其数据更改旨在通过逻辑复制进行复制。 有关发布如何适应逻辑复制设置的详细信息, 请参见第 30.1 节。
name
新发布的名称。
FOR TABLE
指定要添加到发布的表的列表。如果在表名之前指定了ONLY
, 那么只有该表被添加到发布中。如果没有指定ONLY
, 则添加表及其所有后代表(如果有的话)。可选地,可以在表名之后指定 *
以明确指示包含后代表。但是,这不适用于分区表。 分区表的分区始终被隐式视为发布的一部分,因此永远不会明确将其添加到发布中。
只有持久基表和分区表才能成为出版物的一部分。 临时表,未记录表,外部表,物化视图和常规视图不能成为发布的一部分。
将分区表添加到发布时,其所有现有分区和将来分区都被隐式视为发布的一部分。 因此,即使直接在分区上执行的操作也会通过其祖先所在的发布来发布。
FOR ALL TABLES
将发布标记为复制数据库中所有表的更改,包括在将来创建的表。
WITH ( publication_parameter
[= value
] [, ... ] )
该子句指定发布的可选参数。支持下列参数:
publish
(string
)这个参数决定了哪些DML操作将由新的发布发布给订阅者。 该值是用逗号分隔的操作列表。允许的操作是insert
, update
,delete
和truncate
。 默认是发布所有的动作,所以这个选项的默认值是"insert, update, delete, truncate"
。
publish_via_partition_root
(boolean
)此参数确定是否会使用分区表的标识和模式而不是实际更改的单个分区的标识和模式来发布发布中包含的分区表(或其分区)中的更改。 单个分区的标识和模式是默认设置。 启用此功能可以将更改复制到非分区表或由一组不同的分区组成的分区表中。
如果启用此功能,则不会复制直接在分区上执行的TRUNCATE
操作。
如果既没有指定FOR TABLE
,也没有指定FOR ALL TABLES
, 那么这个发布就是以一组空表开始的。这在稍后添加表格的情况下是有用的。
创建发布不会开始复制。它只为未来的订阅者定义一个分组和过滤逻辑。
要创建一个发布,调用者必须拥有当前数据库的CREATE
权限。 (当然,超级用户不需要这个检查。)
要将表添加到发布中,调用者必须拥有该表的所有权。FOR ALL TABLES
子句要求调用者是超级用户。
添加到发布UPDATE
和/或DELETE
操作的发布的表必须已经定义了REPLICA IDENTITY
。 否则将在这些表上禁止这些操作。
对于INSERT ... ON CONFLICT
命令, 发布将公布从命令实际产生的操作。因此,根据结果,它可以作为 INSERT
或UPDATE
发布,也可以根本不发布。
COPY ... FROM
命令是作为INSERT
操作发布的。
不发布DDL操作。
创建一个发布,发布两个表中所有更改布:
CREATE PUBLICATION mypublication FOR TABLE users, departments;
创建一个发布,发布所有表中的所有更改:
CREATE PUBLICATION alltables FOR ALL TABLES;
创建一个发布,只发布一个表中的INSERT
操作:
CREATE PUBLICATION insert_only FOR TABLE mydata
WITH (publish = "insert");
CREATE PUBLICATION
是一个PostgreSQL
扩展。
CREATE USER — 定义一个新的数据库角色大纲CREATE USER name [ [ WITH ] option [ ... ] ]这里 option 可以是:SUPERUSER | NOS...
DROP ACCESS METHOD — 移除一种访问方法大纲DROP ACCESS METHOD [ IF EXISTS ] name [ CASCADE | RESTRICT ]简介 DROP ACCESS M...
XSL-FO list-block 对象XSL-FO 参考手册定义和用法 fo:list-block 对象用于格式化整个列表。 下面列举了四个用于创建列表的 XSL-...
XSD 仅含文本 在XMLSchema复合元素的类型中,包括仅含文本的复合元素。仅含文本的复合元素可包含文本和属性。仅含文本的复合元素...
XSLT xsl:choose 元素本节将为你介绍 xsl:choose 元素的使用。xsl:choose 元素用于结合 xsl:when 和 xsl:otherwise 来表达多重条...
XSLT xsl:decimal-format 元素本节是对 XSLTxsl:decimal-format元素使用的介绍。 完整的 XSLT 元素参考手册定义和用法 xsl:decim...
XML DOM 获取节点值 再本节内容中,你将了解如何通过特定的方法来在 DOM 中获取节点值。nodeValue 属性用于获取节点的文本值。 g...
XML DOM substringData() 方法 Comment 对象定义和用法 substringData() 方法从注释节点中获取字符串。 语法substringData(start...
XML DOM setAttributeNode() 方法 Element 对象定义和用法 setAttributeNode() 方法添加新的属性节点。 如果元素中已经存在指定...
XML DOM appendChild() 方法 Node 对象定义和用法 appendChild() 方法把新的子节点追加到节点的子节点列表的末尾。 该方法返回新...