mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-23 22:48:18 +00:00
145 lines
5.9 KiB
Plaintext
145 lines
5.9 KiB
Plaintext
---
|
|
title: 表结构编辑器
|
|
description: 可视化查看和修改字段、索引、外键与触发器,并在执行前审查数据库方言对应的 DDL。
|
|
---
|
|
|
|
表结构编辑器把单表元数据和变更草稿放在持久化标签页中。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,在代码仓库中审查或交给迁移工具执行。
|
|
|
|
<Callout type="warn">字段删除、类型转换、收紧 `NULL`、修改主键、重排物理字段和重建表都可能锁表或丢失数据。生产环境先检查执行计划、锁影响、备份和回滚方案。</Callout>
|
|
|
|
## 保存流程
|
|
|
|
<Steps>
|
|
<Step>
|
|
### 读取最新结构
|
|
|
|
打开编辑器后确认字段、索引、外键和触发器已经加载完成。其他客户端刚修改过表时先刷新。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 创建本地草稿
|
|
|
|
新增、修改、删除或重排对象。删除操作会以待删除状态显示,尚未执行。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 审查 DDL
|
|
|
|
检查对象限定名、字段类型、默认值、约束、索引和每条语句顺序。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 执行并刷新
|
|
|
|
确认后执行。生产范围会再次进入生产写入确认;成功后重新读取表结构。
|
|
|
|
</Step>
|
|
</Steps>
|
|
|
|
## 方言与能力差异
|
|
|
|
| 方言/数据库 | 典型行为 |
|
|
| --- | --- |
|
|
| 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) 和应用代码搜索评估影响
|
|
|
|
<Cards>
|
|
<Card title="Schema 对比" href="/cn/docs/schema-diff">
|
|
对比多个环境并生成部署脚本。
|
|
</Card>
|
|
<Card title="字段血缘" href="/cn/docs/field-lineage">
|
|
查看外键、视图和历史 SQL 中的字段关系。
|
|
</Card>
|
|
<Card title="生产安全" href="/cn/docs/production-safety">
|
|
配置只读连接和生产 DDL 确认。
|
|
</Card>
|
|
</Cards>
|