CREATE PUBLICATION

    注意事项

    • 如果既没有指定FOR TABLE,也没有指定FOR ALL TABLES, 那么这个发布就是以一组空表开始的,可以在后续添加表。
    • 创建发布不会开始复制。它只为未来的订阅者定义一个分组和过滤逻辑。 要创建一个发布,调用者必须拥有当前数据库的CREATE权限。(当然,系统管理员不需要这个检查。)
    • 添加到发布UPDATE或DELETE操作的发布的表必须已经定义了REPLICA IDENTITY,否则将在这些表上禁止这些操作。
    • COPY … FROM命令是作为INSERT操作发布的。不发布TRUNCATE和DDL操作。

    参数说明

    • name

      新发布的名称。

    • FOR TABLE

    • FOR ALL TABLES

      将发布标记为复制数据库中所有表的更改,包括在将来创建的表。

    • WITH ( publication_parameter [= value] [, … ] )

      • publish (string)

        这个参数决定了哪些DML操作可以发布给订阅者。该值是一个用逗号分隔的操作列表,允许的操作是insert、update和delete,不指定则默认发布所有的动作。该选项的默认值是’insert, update, delete’。

    1. --创建一个发布,发布所有表中的所有更改。
    2. CREATE PUBLICATION alltables FOR ALL TABLES;
    3. CREATE PUBLICATION insert_only FOR TABLE mydata WITH (publish = 'insert');
    4. --修改发布的动作。
    5. ALTER PUBLICATION insert_only SET (publish='insert,update,delete');
    6. ALTER PUBLICATION insert_only ADD TABLE mydata2;
    7. DROP PUBLICATION insert_only;

    相关链接

    ALTER PUBLICATION