跳到主要内容

Schema 检查

VEF 内置了一个 schema 检查 service,以及一个可通过应用 API 读取数据库结构的内置资源。

模块输出

schema 模块会提供:

输出含义
schema.Serviceschema 检查服务
sys/schema内置 RPC 资源

schema.Service 接口

公开的 schema service 暴露如下方法:

方法返回类型作用
ListTables(ctx)[]schema.Table列出当前 schema / database 下的表
GetTableSchema(ctx, name)*schema.TableSchema检查单张表的详细结构
ListViews(ctx)[]schema.View列出视图
ListTriggers(ctx)[]schema.Trigger列出触发器

内置资源

schema 模块会注册:

资源
sys/schema

当前 action:

Action输入参数输出类型说明
list_tables[]schema.Table列出当前表
get_table_schemaname: stringschema.TableSchema表不存在时会返回专门的 schema-table-not-found 业务错误
list_views[]schema.View列出当前视图
list_triggers[]schema.Trigger列出当前触发器

源码层面的实现细节:

  • 每个 action 当前都单独设置了 Max = 60 的限流上限
  • get_table_schema 会校验 name 必填
  • 表不存在时会映射到 result.ErrCodeSchemaTableNotFound

公共 Schema 类型

schema.Table

字段类型含义
namestring表名
schemastringschema 名
commentstring表注释

schema.TableSchema

字段类型含义
namestring表名
schemastringschema 名
commentstring表注释
columns[]schema.Column全部列
primaryKey*schema.PrimaryKey主键定义
indexes[]schema.Index非唯一索引
uniqueKeys[]schema.UniqueKey唯一约束
foreignKeys[]schema.ForeignKey外键约束
checks[]schema.Checkcheck 约束

schema.Column

字段类型含义
namestring列名
typestring原始数据库类型
nullablebool是否可空
defaultstring默认表达式
commentstring列注释
isPrimaryKeybool是否属于主键
isAutoIncrementbool是否自增

schema.PrimaryKey

字段类型含义
namestring主键名称
columns[]string主键列

schema.Index

字段类型含义
namestring索引名
columns[]string索引列

schema.UniqueKey

字段类型含义
namestring唯一键名
columns[]string唯一列

schema.ForeignKey

字段类型含义
namestring外键名
columns[]string本地列
refTablestring引用表
refColumns[]string引用列
onUpdatestring更新策略
onDeletestring删除策略

schema.Check

字段类型含义
namestringcheck 约束名称
exprstringcheck 表达式

schema.View

字段类型含义
namestring视图名
schemastringschema 名
definitionstring视图定义 SQL
commentstring视图注释
columns[]string输出列
materializedbool是否物化视图

schema.Trigger

字段类型含义
namestring触发器名
tablestring目标表(如适用)
viewstring目标视图(如适用)
actionTimestringbefore / after / instead-of 时机
events[]string触发事件,如 insert / update
forEachRowbool行级还是语句级触发器
bodystring触发器定义体

最小请求示例

{
"resource": "sys/schema",
"action": "get_table_schema",
"version": "v1",
"params": {
"name": "sys_user"
}
}

典型用途

这个功能很适合:

  • 后台管理工具
  • 内部开发者工具
  • 需要 schema 感知的集成能力
  • 需要数据库元信息的 MCP / prompt 工作流

下一步

继续阅读 内置资源,看 sys/schema 在整个框架内置 RPC 资源体系里所处的位置。