浏览 AI 知识库

让 AI 写 SQL 时怎样限制范围并先做只读验证

让 AI 写 SQL 时,最危险的不是语法错误,而是语句正确地改错了数据。先用只读查询预览对象、主键和影响行数,再考虑审批执行。

按实际操作顺序推进

每完成一段就检查当前输出,确认结果符合预期后再继续。

  1. 01准备动手前,把材料和不能改的部分定下来
  2. 02执行让 AI 写 SQL 前,先限定只读范围和样例结果
  3. 03检查为什么“影响行数符合预期,语义仍可能错”还不能交付
  4. 04完成只读预览、影响行数与审批记录通过哪些检查才算完成
从手头这一份材料开始

删除“重复客户”之前,先证明这些记录真的重复

让 AI 写“删除重复客户”的 SQL,它根据姓名去重并准备执行 DELETE;同名客户实际属于不同公司,影响行数也没有预览。

  • 只读预览和影响行数已确认
  • 业务主键定义由负责人批准
  • 写操作仍处于人工审批之后
本例材料

动手前,把材料和不能改的部分定下来

需要确认本例内容
现有材料表 `customers` 含 customer_id、company_id、email、name;重复定义必须是同 company_id 与规范化 email。
不能越过的边界先只读查询和小样本;写操作必须显式事务、审批与备份;表名和 WHERE 不确定时停止。
要交付的结果只读预览、影响行数与审批记录
实际操作

AI 写 SQL 注意事项,从“固定目标和范围”开始做

固定目标和范围

写要找或修改的精确对象、时间窗、租户和排除条件,确认主键与唯一约束。

先生成 SELECT

用与计划写操作完全相同的 WHERE 和 JOIN 预览主键、旧值、新值候选和总行数。

检查执行计划与锁

在合适环境评估索引、全表扫描、事务大小和并发影响,避免一次处理未知规模。

准备备份和事务

选择可恢复方式、批次、审计表和回滚 SQL;数据库不支持所需事务语义时重新设计。

批准后执行并复核

由责任人确认目标、影响行数和窗口;执行后重跑核对查询并保存日志。

只读预览

先列出将被更新的 37 个主键,再讨论 UPDATE

步骤实际输入输出批准标准
目标tenant_id=acme,status=pending,created_at<2026-09-01范围条件和排除条件责任人确认租户和时间窗
预览同一 WHERE 的 SELECT id, status37 个主键、旧值和计数数量与业务预期一致
计划EXPLAIN 与锁/索引观察执行计划、耗时和影响无未知全表锁或超时
执行受控事务/批次和备份实际更新行数和日志与预览一致,异常可回滚
复核再次 SELECT 与业务报表新状态和审计记录随机抽样通过

租户、日期和数量为演示输入;生产写操作必须由当前负责人确认。

AI 介入点

让 AI 写 SQL 前,先限定只读范围和样例结果

AI适合起草查询与解释执行计划,不应直接操作生产库。

可复制使用

让 AI 写 SQL 前,先限定只读范围和样例结果

我需要一条只读 SQL 来回答指定问题。请先检查数据结构和口径,不能连接或执行数据库操作。

数据库类型/版本【】;脱敏表结构【】;几行脱敏样例【】;目标问题与时间区间【】;允许读取的表和字段【】;预期输出列【】。

先解释连接键、过滤条件、空值和重复行将如何处理。返回单条 SELECT、参数说明、可能的重复放大风险和最多一条用于核对行数的小查询。SQL 中禁止写入/更新/删除/建表语句;如果主键、时间区间或单位不足以定义问题,先问清,不要把猜测塞进查询。

使用范围:AI适合起草查询与解释执行计划,不应直接操作生产库。禁止INSERT、UPDATE、DELETE、DDL和无条件全表扫描;不要接收真实凭证。

最终输出

完成后的只读预览、影响行数与审批记录

先用 CTE 输出候选重复组、保留行、拟处理行与原因,共 14 组 19 行;业务确认其中 2 组为合法共享邮箱后排除。最终仅生成待审批 SQL 与影响 17 行的预览,没有自动执行。

常见失败

为什么“影响行数符合预期,语义仍可能错”还不能交付

影响行数符合预期,语义仍可能错

原因
数量正确不代表选中了正确对象
怎么改
抽查每组业务键和关联表,先在事务中验证约束与回滚
验收方式

只读预览、影响行数与审批记录通过哪些检查才算完成

进一步核对

后端与数据:参考资料与核对入口