Zion不是标准数据库系统,无建表必填功能;若实际使用金仓(KingbaseES),需同时用NOT NULL与DEFAULT才实现业务必填。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用函子Zion建表时不能设必填,因为Zion不是标准数据库系统或主流ORM框架,当前所有权威技术文档、官方仓库和数据库生态资料中均未收录名为“Zion”的数据库引擎、建表工具或SQL方言解析器;你实际遇到的很可能是拼写误差、内部代号、小众前端建模库的别名,或是将“Zion”与“PostgreSQL”“Kingbase(金仓)”“TiDB”等名称混淆所致。
先确认你用的到底是不是Zion
打开你的项目依赖列表或终端执行:npm list | grep -i zion(前端)或pip list | grep -i zion(Python),检查是否存在真实名为zion的包。若无结果,大概率是记错了名字——常见混淆项包括:
• KingbaseES(金仓数据库),常被口误念作“金仓→近仓→Zion”;
• Zod(TypeScript运行时校验库),有人误以为它能直接建数据库表;
• 自研低代码平台内部模块代号,如“Zion-ORM”未对外开源,其约束能力完全取决于该平台自身实现。
如果你实际用的是金仓数据库(KingbaseES)
金仓完全支持建表时声明字段为必填,语法与 PostgreSQL 高度兼容:
方法一:用 NOT NULL 显式声明
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, email TEXT);
这一步必须写在字段定义末尾,漏掉会默认允许 NULL,后续插入空值不报错。
方法二:结合 DEFAULT 防止空值穿透
status SMALLINT NOT NULL DEFAULT 1;
注意:【NOT NULL 和 DEFAULT 必须同时存在才真正兜住必填语义】。只写 NOT NULL,插入时不给值会直接报错;只写 DEFAULT,字段仍可显式插入 NULL——两者缺一不可才算业务意义上的“必填”。
如果你用的是某低代码平台或前端建模工具,声称叫Zion
第一步:查该工具生成的最终 SQL 输出
在界面点“导出建表语句”或打开浏览器开发者工具 → Network 标签页 → 筛选 xhr/fetch 请求 → 找到 createTable 类型请求,看 payload 里发出去的到底是哪条 SQL。
第二步:根据实际 SQL 类型判断约束能力
① 如果发出的是标准 SQL(含 NOT NULL、CHECK 等),说明底层对接的是真实数据库,必填由数据库执行;
② 如果发出的是 JSON Schema 或 YAML 描述(如 {"fields": [{"name": "phone", "required": true}]}),那“必填”只是前端校验开关,后端不拦截就形同虚设;
③ 如果连建表请求都看不到,说明该工具根本不触达数据库,所谓“建表”只是内存态结构模拟——此时谈 NOT NULL 没有意义。











