# 表结构编辑器

> 可视化查看和修改字段、索引、外键与触发器，并在执行前审查数据库方言对应的 DDL。

Source: https://dbxio.com/cn/docs/table-structure

Language: zh-CN

Relative links resolve against https://dbxio.com/cn/docs/table-structure.



表结构编辑器把单表元数据和变更草稿放在持久化标签页中。DBX 会根据数据库 capability 只开放能够可靠生成的操作，并在保存前展示最终 DDL。

## 打开方式

* 右键表选择**查看结构**或**编辑结构**
* 从字段节点直接打开并定位对应字段
* 从索引节点直接打开并定位对应索引
* 从数据表格的表信息区域打开结构标签
* 从对象浏览器或 DDL 入口打开同一张表

编辑器会保留当前标签、滚动位置、列宽和本地字段顺序，便于在结构与数据之间切换。

## 结构标签

| 标签  | 主要内容                                 |
| --- | ------------------------------------ |
| 字段  | 名称、类型、长度/精度、可空、默认值、主键、自增、字符集、排序规则、注释 |
| 索引  | 名称、字段、类型、唯一、包含列、过滤条件、注释和重建入口         |
| 外键  | 本地字段、目标表/字段、`ON DELETE`、`ON UPDATE`  |
| 触发器 | 触发器元数据、源码和数据库支持的创建/修改/删除             |
| DDL | 当前表定义或驱动生成的结构 SQL                    |

数据库未提供某类元数据时，对应标签会隐藏、只读或显示能力说明。

## 字段编辑

根据数据库能力，可以：

* 新增字段，或插入到当前选中字段之后
* 删除、重命名和修改字段
* 修改类型、长度、精度、Scale 和数据库专属长度单位
* 修改 `NULL`、默认值、主键、自增、字符集、排序规则和注释
* 使用常见默认值快捷选项
* 拖拽字段调整顺序

列重排有两种语义：

* MySQL 等支持物理列顺序的数据库会生成真正的顺序变更 DDL
* 部分数据库只在 DBX 中保存本地显示顺序，不修改数据库物理结构

创建新表时，可以使用设置中的预设字段快速加入常见主键、时间戳或审计字段。

## 索引、外键与触发器

索引能力按数据库方言开放，例如：

* 创建、删除或重建索引
* 普通、唯一和数据库专属索引类型
* PostgreSQL / SQL Server 等支持的包含列或过滤条件
* 索引注释（数据库支持时）
* 自动生成新索引名称，并允许修改

外键编辑包括字段映射和更新/删除动作。触发器编辑依赖数据库源码读取和安全 DDL 生成能力；不支持直接修改时仍可以查看源码或复制 DDL。

## DDL 预览

编辑不会立即写入数据库。保存前，DBX 会根据当前方言生成并高亮：

* `ALTER TABLE ... ADD/DROP/RENAME/MODIFY COLUMN`
* 默认值、`NULL`、主键和注释变更
* `CREATE INDEX`、`DROP INDEX`、重建索引
* 外键和触发器相关 DDL
* SQLite 等需要重建表时的迁移步骤

可以复制完整 DDL，在代码仓库中审查或交给迁移工具执行。

字段删除、类型转换、收紧 

`NULL`

、修改主键、重排物理字段和重建表都可能锁表或丢失数据。生产环境先检查执行计划、锁影响、备份和回滚方案。

## 保存流程

### 读取最新结构

打开编辑器后确认字段、索引、外键和触发器已经加载完成。其他客户端刚修改过表时先刷新。

### 创建本地草稿

新增、修改、删除或重排对象。删除操作会以待删除状态显示，尚未执行。

### 审查 DDL

检查对象限定名、字段类型、默认值、约束、索引和每条语句顺序。

### 执行并刷新

确认后执行。生产范围会再次进入生产写入确认；成功后重新读取表结构。

## 方言与能力差异

| 方言/数据库                              | 典型行为                                   |
| ----------------------------------- | -------------------------------------- |
| MySQL / MariaDB 兼容                  | 字段属性、物理重排、主键、索引、外键和注释覆盖较完整             |
| PostgreSQL / Gauss 系兼容              | 字段类型/默认值/可空/注释、索引包含列/过滤、外键等按方言生成       |
| SQLite                              | 部分复杂字段变更通过安全的表重建策略实现                   |
| DuckDB                              | 支持常见字段与索引操作，但能力不同于 SQLite              |
| SQL Server                          | 支持字段和索引变更，部分默认约束、包含列和过滤索引使用专属语法        |
| Oracle / 达梦等                        | 使用 Oracle 风格字段、注释和索引 DDL；整数长度等无意义选项会禁用 |
| ClickHouse / Manticore / InfluxDB 等 | 只开放对应实现已验证的子集                          |
| JDBC/Agent                          | 根据识别出的方言映射；无法可靠识别时保持只读                 |

不要根据“能连接”推断“所有 DDL 都能编辑”。当前范围以 [数据库支持](/cn/docs/databases) 和编辑器实际控件为准。

## 并发与恢复

* 编辑草稿基于打开时读取的元数据，不会自动合并其他客户端的结构变更
* 执行失败后，数据库可能已经成功执行前面的部分语句
* SQLite 重建和多语句 DDL 的原子性取决于数据库和驱动
* 刷新会重新读取结构，未保存草稿可能需要先确认放弃
* 只读连接会阻止保存；生产连接每次写入都需要明确确认

## 使用建议

* 小范围单表修改可以直接使用编辑器
* 大规模迁移把复制的 DDL 纳入版本控制和 Review
* 多环境对齐使用 [Schema 对比](/cn/docs/schema-diff)
* 高风险操作前使用 [数据库导出](/cn/docs/database-export) 或 [定时数据库备份](/cn/docs/database-backup)
* 修改字段前结合 [字段血缘](/cn/docs/field-lineage) 和应用代码搜索评估影响

### [Schema 对比](/cn/docs/schema-diff)

对比多个环境并生成部署脚本。

### [字段血缘](/cn/docs/field-lineage)

查看外键、视图和历史 SQL 中的字段关系。

### [生产安全](/cn/docs/production-safety)

配置只读连接和生产 DDL 确认。

