# CREATE SUBSCRIPTION
#### 功能描述
为当前数据库添加一个新的订阅（SUBSCRIPTION）。
订阅（Subscription） 是指一个数据库实例（称为订阅者）从另一个数据库实例（称为发布者）接收数据变更的过程。订阅者通过订阅发布者的数据变更，实现数据的同步和分发。
**该语法在9.1.1.100及以上集群版本中已废弃，执行时会报错SUBSCRIPTION is not yet supported。**
#### 注意事项
- 只有系统管理员才可以创建订阅。
- 新创建的订阅名称不能与当前数据库中任何现有的订阅名称相同。
 
#### 语法格式
```
CREATE SUBSCRIPTION name
    CONNECTION 'conninfo'
    PUBLICATION publication_name [, ...]
    [ WITH ( subscription_parameter [= value] [, ... ] ) ]
```
 #### 参数说明
表1CREATE SUBSCRIPTION参数说明 
| 参数                                                   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 取值范围                                                                                                                                                    |
|:---|:---|:---|
| name                                               | 新订阅的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 字符串，要符合标识符的命名规范。参见[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。 |
| conninfo                                           | 连接发布端的字符串。 - **host**，发布端IP地址，可以同时指定发布端主机和备机的IP地址，如果同时指定了多个IP，以英文逗号分隔。  - **port** ，发布端端口，此处的端口不能使用主端口，而应该使用主端口+1端口，否则会与线程池冲突。可以同时指定发布端主机和备机的端口，如果同时指定了多个端口，以英文逗号分隔。**host和port的数量要一致，并且要相对应。**  - **dbname**，发布所在的数据库。  - **user和password** 用于连接发布端且具有系统管理员权限(SYSADMIN)或者运维管理员权限(OPRADMIN)的用户名和密码。             | 例如：host=1.1.1.1,2.2.2.2 port=10000,20000 dbname=postgres user=repusr1 password=*password*。                                                              |
| publication_name                                    | 要订阅的发布端的发布名称，一个订阅可以对应多个发布。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 已有的发布名称。                                                                                                                                                 |
| WITH ( subscription_parameter \[= value\] \[, ... \] ) | 该子句指定订阅的可选参数。 - **enabled** ，指定订阅是否应该主动复制，或者只是先被创建而不立即运行。 取值范围：true，false。 默认值：true   - **create_slot** ，指定该命令是否要在发布者端创建复制槽。 取值范围：true，false。 默认值：true   - **slot_name** ，指定要在发布者端使用的复制槽名称。 取值范围：字符串。 默认值：默认使用订阅名称作为复制槽的名称。    | -                                                                                                                                                  |
   
#### 示例
数据库发布的示例数据请参考[示例](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0285.html#ZH-CN_TOPIC_0000002616106471__zh-cn_topic_0000001811634585_section1853433744413)。
- 创建订阅，订阅上游数据库的发布。
  ```
  CREATE SUBSCRIPTION sub_demo
      CONNECTION 'host=10.***.*.** port=10000 user=u_admin dbname=testdb password=********'
      PUBLICATION pub_sales_only;
  ```
  
- 订阅多个发布。
  ```
  CREATE SUBSCRIPTION sub_demo_1
      CONNECTION 'host=10.***.*.** port=10000 user=u_admin dbname=testdb password=********'
      PUBLICATION pub_sales_only,pub_sales_all_ops;
  ```
  
- 订阅所有表（需上游发布包含ALL TABLES IN SCHEMA）。
  ```
  CREATE SUBSCRIPTION sub_demo_1
      CONNECTION 'host=10.***.*.** port=10000 user=u_admin dbname=testdb password=********'
      PUBLICATION pub_all_tables;
  ```
  
 
#### 相关链接
[ALTER SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0287.html)，[DROP SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0289.html)
