ToolJet 数据库表操作完全指南:搜索、重命名、列管理、Schema 导出与删除
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
ToolJet Database(ToolJet 内置数据库)为应用开发提供了零配置、开箱即用的数据管理能力,其中表(Table)操作是日常开发中使用频率最高的环节。本文基于 table-operations.md 文档,结合 数据库编辑器、数据类型、主键、外键 文档以及前端源码实现,系统讲解表的搜索、重命名、新增/编辑/删除列、Schema 导出与整表删除等全部操作,并给出数据类型的约束细节与源码级佐证。读完本文,你将能熟练通过 Database Editor 完成表的全生命周期管理。
搜索表(Search Table)
当数据库中的表数量较多时,可以通过搜索快速定位目标表:
- 点击 Database Editor 顶部的Search按钮,打开搜索栏;
- 输入表名称,即可在左侧表列表中实时过滤匹配的表。
所有表在左侧边栏按字典序(lexicographically)排列,搜索功能在此基础上按名称精确匹配。若需要更大的编辑空间,侧边栏可以折叠收起,相关交互见 数据库编辑器。
重命名表(Rename Table)
重命名表的操作路径位于表名右侧的 kebab 菜单(三个点的更多菜单):
- 点击表名右侧的 kebab 菜单图标;
- 选择Edit table选项;
- 右侧将打开一个抽屉(drawer),在其中修改表名并保存。
从源码结构看,前端通过 TableForm.jsx 调用tooljetDatabaseService.renameTable()接口完成重命名,重命名成功后 TableList/index.jsx 会同步更新本地表列表状态,保证 UI 与数据库一致。kebab 菜单中的Edit table与Add new column、Export schema等入口统一由 ActionsPopover/index.jsx 渲染。
新增列(Add New Column)
向已有表添加新列有两种入口:
- 点击表名右侧 kebab 菜单中的Add new column;
- 直接点击表头末尾的+按钮。
随后右侧会打开抽屉,需要填写以下字段:
| 字段 | 说明 |
|---|---|
| Column Name | 新列的名称,必须唯一,作为该列的标识键(key identifier) |
| Data Type | 从下拉列表中选择合适的数据类型,可选类型见下文“支持的数据类型” |
| Default Value | 为新列指定默认值,可留空。注意:当表中已存在数据行,且新列(或既有列)应用了 NOT NULL 约束时,必须提供默认值,否则无法通过约束校验 |
| Foreign Key Relation | 打开开关即可为列添加外键关系,随后可选择要引用的目标表与目标列 |
支持的数据类型
ToolJet 数据库内置以下数据类型(详见>数据类型
id(serial 类型)作为主键true/false'2024-07-22 15:30:00'{"name": "John Doe", "skills": ["JavaScript", "Python"], "address": {"city": "New York"}}各数据类型的允许约束
| 数据类型 | 主键 | 外键 | 唯一 | 非空 |
|---|---|---|---|---|
| serial | ✅ | ❌ | ✅ | ✅ |
| varchar | ✅ | ✅ | ✅ | ✅ |
| int | ✅ | ✅ | ✅ | ✅ |
| bigint | ✅ | ✅ | ✅ | ✅ |
| float | ✅ | ✅ | ✅ | ✅ |
| boolean | ❌ | ❌ | ❌ | ✅ |
| date with time | ❌ | ❌ | ❌ | ✅ |
| jsonb | ❌ | ❌ | ❌ | ✅ |
由此可知:boolean、date with time、jsonb类型只能应用Not Null约束,不能作为主键或外键;而serial类型不能作为外键列。详细的约束定义见 数据库编辑器 - 列约束 与 主键、外键 文档。
导出表 Schema(Export Schema)
Export schema功能允许将选中表的**表结构(schema)**以 JSON 文件形式下载。需要特别注意的是:
- 该功能只导出表结构,不包含表数据与表间关系(relationships);
- 在导出应用时,你可以选择「带表 schema」或「不带表 schema」导出。
操作方式:点击表名右侧的三个竖点图标 → 选择Export→ 浏览器将自动下载一个包含表 schema 的 JSON 文件。
从源码实现看,导出由 TableListItem/index.jsx 中的handleExportTable完成:它调用appsService.exportResource()并传入{ tooljet_database: [{ table_id }], organization_id },成功后按表名-export-时间戳.json的文件名生成 Blob 并模拟点击触发下载。若导出失败,会弹出Could not export table.的错误提示。这也是 ToolJet 通过「导出资源」机制实现应用/数据迁移的基础能力之一。
删除表(Delete Table)
删除整张表的操作:
- 点击表名右侧的三个竖点图标;
- 选择Delete选项;
- 在确认弹窗中点击Delete按钮,完成删除。
对应前端实现中,TableListItem/index.jsx 的handleDeleteTable会先用confirm()弹出确认框,确认后调用tooljetDatabaseService.deleteTable(organizationId, tableName)删除;删除成功会提示Table "xxx" deleted successfully并触发回调刷新表列表,失败则展示对应错误信息。删除表属于破坏性操作,确认框的设计即为防止误删——建议删除前先通过 Export schema 备份表结构。
编辑列(Edit Column)
修改列属性(如列名、默认值、约束等)时:
- 点击列名上的 kebab 菜单;
- 选择Edit column选项,打开编辑抽屉。
关键限制:编辑列时无法更改其数据类型(data type)。这是因为数据类型决定底层存储格式与索引,中途变更会破坏既有数据的有效性。若确实需要更换类型,通常的做法是新增一个目标类型的列、迁移数据,再删除旧列。
编辑列的约束能力(如 Primary Key、Unique、Not Null、Foreign Key)与建表时一致,具体说明见 数据库编辑器 - 列约束。
删除列(Delete Column)
删除列的操作:
- 点击列名上的 kebab 菜单;
- 选择Delete选项。
重要限制:用作主键的列不能直接删除。必须先移除该列的主键约束(即先在 Edit Table 面板中将主键切换/指定到其他列),然后才能删除原主键列。完整流程参考 主键 - 删除主键:编辑表 → 指定新主键列 → 取消原主键列上的 Primary 勾选 → 再删除该列。
类似地,若某个列正被其他表作为外键引用(作为目标表被引用的列),同样无法直接删除,需要先处理引用关系,以保证数据完整性与引用完整性(referential integrity),详见 外键。
操作背后的约束体系
以上所有表操作都建立在 ToolJet 数据库的约束体系之上,理解这些约束可以避免操作报错:
- Primary Key(主键):保证指定列值唯一且非空,用于唯一标识每条记录。支持单列主键与多列组合主键(composite primary key);每个表必须至少有一个主键,且主键列不能是 boolean 类型;
- Foreign Key(外键):建立源表与目标表之间的引用关系,确保源表外键列的值必须存在于目标表被引用列(目标列需有 Unique 约束);不允许自引用(源表 ≠ 目标表),源表外键列不能是 serial 类型(int 类型例外,可引用目标表的 serial 列);
- Unique(唯一):保证列值在表内不重复,但允许 null 值;
- Not Null(非空):要求每行都必须有值,不允许 null。
新增列时若同时勾选 Not Null 且表中已有数据,就必须填写默认值,正是这些约束在底层校验的结果。
小结
本文覆盖了 ToolJet Database 的全部核心表操作:搜索、重命名、新增列、编辑列、删除列、导出 schema 与删除表,并补充了数据类型、约束规则与前端源码实现细节。掌握这些操作,配合 SQL 编辑器 与 数据库编辑器 中的行数据增删改、筛选排序、批量上传能力,即可在 ToolJet 中完成从建表到数据维护的完整闭环。
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考