最近团队里有个现象:AI 助手写 SQL 越来越快,但 Code Review 越来越累。
不是 AI 写得不对,是它"太对了"——语法永远正确,可它不知道我们厂的规矩。
举几个上周真实拦下来的例子:
– 坑 1:查询库存,顺手 WITH(NOLOCK)
SELECT * FROM T_Inventory WITH(NOLOCK) WHERE SkuId = @SkuId
– 库存是要扣的,脏读一下,账就对不上
– 坑 2:按年统计,把函数套在列上
SELECT * FROM T_MI WHERE YEAR(CreateTime) = 2026
– 索引直接失效,百万行全表扫
– 坑 3:建表用了保留字,还忘了主键
CREATE TABLE ORDER (Id int, Status int)
– 每次都得写 [ORDER],还成了堆表
这三个坑,语法上都没错,AI 也不会提醒你。它们只会在上线后以"报表很慢""库存对不上"的形式找你。
我把这六年踩过的坑,整理成了 22 条规则,做成一个 SQL 规范体检工具:
粘贴 SQL → 输出百分制评分 + 问题明细 + 改写示例。
规则分六类:
- 命名(表/存储过程/视图前缀、保留字)
- 性能反模式(SELECT *、列上函数、隐式转换、堆表)
- 事务与隔离(长事务分批、NOLOCK 滥用、多写缺事务)
- NULL 与类型(= NULL、NOT IN 陷阱)
- 安全(拼接 SQL 注入)
- 可维护性(魔数、缺注释、重复子查询)
我自己拿 12 段真实 ERP 风格的 SQL 做了基准测试:
- 规则检出率 30/30(100%)
- 评分与人工标注完全一致
- 平均分 69.6 —— 也就是说,随手写的 SQL,大概率是不及格的
用法很简单:把建表、存储过程、报表 SQL 粘进去,它会告诉你哪条是"阻断项,不建议上线"。
不连数据库、不执行任何 SQL、不改你的文件,纯静态分析。厂里的代码不方便外传,这点很重要。
工具放在 SkillPay 上,买断 9.9,一次买断永久用:【阅读原文】
如果你也在接老项目、或者团队开始用 AI 写 SQL,建议先拿手上最烂的那段存储过程试一次——分数会让你清醒。
针对AI生成SQL虽语法正确但存在生产隐患的问题,作者基于6年ERP实战经验提炼22条SQL规范规则,覆盖命名、性能、事务、NULL处理、安全及可维护性六大维度。该工具为纯静态分析小工具,不连接数据库、不执行SQL,支持粘贴即检,输出评分、问题明细与改写示例,检出率100%,适用于SQL质量把关与团队Code Review辅助。

316

被折叠的 条评论
为什么被折叠?



