MarsCode需根据API文档的完整JSON示例生成PostgreSQL 15.4建表语句,主键用UUIDv4,文本字段默认NOT NULL(null值除外),时间字段自动映射timestamptz,status用有序ENUM+CHECK单向流转,金额字段强制DECIMAL(12,2),索引按高频查询路径显式定义且命名规范,每表添加pg_stat_statements注释。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在MarsCode中生成可直接落地的数据库建表SQL,但提示词写成“建个用户表”“加个订单字段”,结果出来的DDL缺主键、没索引、时间字段用datetime而非timestamptz,甚至把tinyint当布尔用——这些细节漏掉一条,上线后就可能引发数据错乱或查询雪崩。
用接口契约反推字段定义
打开你正在对接的API文档 → 找到POST /api/v1/users 的Request Body示例 → 复制整个JSON对象(含嵌套结构)→ 粘贴到MarsCode搜索框最开头。
这一步不能只复制字段名列表。必须保留原始JSON的层级、空值标记和示例值,比如{"id": "usr_8a2f3c", "status": null, "created_at": "2026-07-02T09:15:22.123Z"}。【MarsCode会根据null判断是否允许NULL,根据ISO 8601格式自动选用timestamptz而非datetime】。
在JSON后另起一行写:“按PostgreSQL 15.4语法生成CREATE TABLE语句,主键用UUIDv4,所有文本字段加NOT NULL约束,除非原始JSON中明确标为null。”
按业务动作锁定约束条件
方法一:状态流转驱动约束
“用户注册 → 邮箱验证 → 实名认证 → 开通付费 → 账号注销”这条链路上,每个状态变更都对应一个不可逆操作。请为user_status字段设计ENUM类型,枚举值严格按此顺序:'registered', 'verified', 'certified', 'paid', 'deactivated';并添加CHECK约束:status只能从左向右单向推进,禁止跳过中间状态(如verified→paid)。”
方法二:金额字段强制精度锚定
“所有金额类字段(price、discount、total)必须用DECIMAL(12,2),禁止使用FLOAT或DOUBLE;小数点后必须固定2位,不允许出现.00以外的精度(如199.999会被截断报错)。”
【DECIMAL(12,2)是硬性要求,用FLOAT会导致支付对账偏差超0.01元】
索引与性能兜底策略
第一步:识别高频查询路径
① 查询用户时总带WHERE tenant_id = ? AND status = ? → 在tenant_id和status上建复合索引;
② 按创建时间倒序查最近100条 → 在created_at字段上建降序索引;
③ 搜索用户名含模糊匹配 → 在username字段上建GIN索引 + trigram扩展支持。
第二步:禁用危险默认
“不生成任何B-tree单列索引;所有索引名必须以idx_开头+字段名缩写(如idx_tnt_sts);禁止为外键字段自动添加索引——需显式声明才创建。”
第三步:写入性能保护
“每张表默认添加pg_stat_statements兼容注释:/* pg_stat_statements: user_search_by_email */,便于后续定位慢查询源头。”

















