# 数据发布与订阅

将来源数据库中的表发布给目标工作区，或在收到邀请后接受订阅并在目标工作区创建订阅数据库。本页覆盖发布和订阅的完整协作链路；来源表的创建与维护请转到[管理目录、数据库和表](catalog-databases-tables.md)。

## 前提条件

- 准备目标工作区的访问条件；通用规则见[调用前准备](../../api-call-basics.md)。
- 创建发布前，已确定来源数据库以及要发布的全部表或指定表。
- 接受订阅前，已从订阅列表中取得目标订阅，并已确定目标工作区中的订阅数据库名称。

## 调用顺序

1. 发布方先查询可用于创建发布的来源数据库表，并检查准备使用的发布名称。需要在已有数据分享关系中核对工作区名称时，再查询或批量解析名称。
2. 创建数据发布并记录发布标识。创建成功只表示发布已建立；目标工作区还需要接受订阅。
3. 通过发布列表和发布汇总确认当前发布及其覆盖情况；需要调整表范围、目标工作区或备注时更新发布。
4. 订阅方查询收到的订阅，选择目标订阅后接受它，并指定订阅数据库名称。接受后重新查询订阅列表确认结果。
5. 取消订阅或删除发布前，先确认下游工作区不再依赖相应数据；操作后重新查询列表确认结果。

## API 操作

### 准备和维护数据发布

| 要完成的事 | API 操作 | 何时使用 |
| --- | --- | --- |
| 查询来源数据库表 | [查询来源数据库表](../../../../reference/api/ai-studio/resource-center/data-publications/list-source-database-tables.md) | 选择可用于创建发布的来源数据库表时使用。 |
| 检查发布名称 | [检查发布名称](../../../../reference/api/ai-studio/resource-center/data-publications/check-publication-name.md) | 创建前检查发布名称在当前工作区是否可用时使用。 |
| 查询工作空间名称 | [查询工作空间名称](../../../../reference/api/ai-studio/resource-center/data-publications/get-workspace-names.md) | 按已有数据分享关系中的工作区 ID 查询名称时使用。 |
| 批量解析工作空间名称 | [批量解析工作空间名称](../../../../reference/api/ai-studio/resource-center/data-publications/resolve-workspace-names.md) | 需要按多个工作区 ID 批量解析名称时使用。 |
| 创建数据发布 | [创建发布](../../../../reference/api/ai-studio/resource-center/data-publications/create-publication.md) | 已确定来源数据库、表范围和目标工作区时使用。 |
| 查询数据发布列表 | [查看发布列表](../../../../reference/api/ai-studio/resource-center/data-publications/list-publications.md) | 选择、确认或重新检查当前工作区的数据发布时使用。 |
| 查询发布汇总 | [查询发布汇总](../../../../reference/api/ai-studio/resource-center/data-publications/get-publication-summary.md) | 查看当前工作区的数据发布数量及目标工作区数量时使用。 |
| 更新数据发布 | [更新发布](../../../../reference/api/ai-studio/resource-center/data-publications/update-publication.md) | 调整发布的表范围、目标工作区或备注时使用。 |
| 删除数据发布 | [删除发布](../../../../reference/api/ai-studio/resource-center/data-publications/delete-publication.md) | 目标工作区不再需要该发布时使用。 |

### 接受和取消数据订阅

| 要完成的事 | API 操作 | 何时使用 |
| --- | --- | --- |
| 查询数据订阅列表 | [查看订阅列表](../../../../reference/api/ai-studio/resource-center/data-subscriptions/list-subscriptions.md) | 查看当前工作区收到的订阅并选择要处理的邀请时使用。 |
| 接受数据订阅 | [接受订阅](../../../../reference/api/ai-studio/resource-center/data-subscriptions/accept-subscription.md) | 已确定订阅和目标订阅数据库名称时使用。 |
| 取消数据订阅 | [取消订阅](../../../../reference/api/ai-studio/resource-center/data-subscriptions/unsubscribe.md) | 已接受的订阅不再需要时使用。 |

## 结果确认

发布方通过[查看发布列表](../../../../reference/api/ai-studio/resource-center/data-publications/list-publications.md)和[查询发布汇总](../../../../reference/api/ai-studio/resource-center/data-publications/get-publication-summary.md)确认发布状态。订阅方在接受或取消后，通过[查看订阅列表](../../../../reference/api/ai-studio/resource-center/data-subscriptions/list-subscriptions.md)确认当前订阅。发布创建成功不代表目标工作区已经接受订阅。

## 限制和注意事项

- 发布名称检查不能替代创建时的最终唯一性校验。
- 删除发布会影响相关订阅的访问，应先确认目标工作区不再需要该发布。
- 取消已接受的订阅后，目标工作区中的订阅数据库会被删除，订阅记录恢复为可重新接受的邀请。

## 下一步

- [管理目录、数据库和表](catalog-databases-tables.md)
- [管理工作区](workspaces.md)
