SQL上线审核工具:在 CI 中检查数据库变更风险

DeltaScope 是一个离线优先的 SQL审核工具,支持 MySQL、TiDB、PostgreSQL 的 DDL/DML 上线审核。它返回 blockerwarningnotice 三级结构化结论。支持 CLI、CI 集成、HTTP 服务、Go SDK、MCP 服务五种入口。

在上线前发现风险 SQL

破坏性 DDL

$ deltascope audit --sql "ALTER TABLE users DROP COLUMN age;"

Verdict: reject
Statements: 1
Blockers:   1

Statement 1: ALTER TABLE
- [blocker] ddl.alter.drop.column: dropping column "age" is a destructive change

无保护 DML

$ deltascope audit --sql "DELETE FROM users;"

Verdict: reject
Statements: 1
Blockers:   1

Statement 1: DELETE
- [blocker] dml.where.require: UPDATE and DELETE statements must include a WHERE clause

CI SQL 审核

# GitHub Actions
- name: Audit SQL migrations
  run: |
    deltascope audit \
      --file ./migrations.sql \
      --format github-actions \
      --fail-on blocker
# GitLab CI
- name: Audit SQL migrations
  run: |
    deltascope audit \
      --file ./migrations.sql \
      --format gitlab-codequality \
      --fail-on warning

接入方式

DeltaScope 不是什么

常见问题

支持哪些数据库?
MySQL、TiDB 和 PostgreSQL。通过 --dialect mysql|tidb|postgresql 选择方言。
严重级别怎么划分?
每条发现分为 blocker(必须修复,会导致数据丢失或停服)、warning(建议修复,存在潜在风险)、notice(提示信息,值得审查)。如果有 blocker 存在,整体结论为 reject;如果只有 warning/notice,结论为 review;如果全部通过,结论为 pass
可以和 AI 编码工具配合使用吗?
可以。MCP 服务器支持 Claude Code、Codex、Cursor 等 40+ AI 编码工具。通过 claude mcp add 或 npx launcher 添加。
需要数据库连接吗?
不需要。默认模式是离线审核,只解析 SQL 文本。可选的元数据感知模式可以连接数据库读取表统计信息。
可以自定义哪些规则是 blocker 吗?
可以。每条规则的严重级别都可以通过 YAML 配置文件覆盖,使用 --config 指定。