SQL 建表智能体怎样核对约束?插入重复、空值和负值,确认数据库拒绝

SQL 建表智能体生成了表结构后,要用不合法数据试插入。字段看起来齐全并不能证明主键、非空与取值范围已实现。

SQL 建表智能体生成了表结构后,要用不合法数据试插入。字段看起来齐全并不能证明主键、非空与取值范围已实现。

让AI根据契约生成建表SQL的开发者。本文使用 Python 3.11 或以上版本的标准库,先验证一组人工构造的小样本。AI 负责提出实现或解释差异,结果由本地检查决定;这里没有把模型回答当成真实运行结果。

SQL 建表智能体怎样核对约束?插入重复、空值和负值,确认数据库拒绝

验证建表SQL的约束前,先定规则

契约是记录ID非空且唯一,count为非负整数。SQLite普通类型亲和性并不自动提供严格整数校验,本例用typeof(count)=integer明确约束。

CHECK与NULL的交互需要单独检查,因此count同时设置NOT NULL,不能只写count>=0。

全部在内存库测试,不修改现有项目表。真实迁移还需要备份与调用方兼容验证。

给 AI 的输入要包含什么

把下面这份输入说明和你的实际样本一起交给可用的 AI 编程助手。示例只含虚构数据;对真实材料先去除账号凭据和个人信息。

根据契约生成SQLite建表:id TEXT NOT NULL PRIMARY KEY,count严格非负整数且NOT NULL。正常1条成功,重复ID、NULL count、负数、浮点count均拒绝。每次失败后核对行数没有新增。

要求模型保留检查条件,并把它认为缺少的业务定义列出来。若回答改变了输入字段、忽略异常分支或直接删除原材料,先要求修正,再运行。提示词的作用是缩小任务范围,验收仍以代码和数据为准。

保存并运行最小验证程序

下方程序把关键规则和验证用例放在同一个可复跑示例中,便于先理解输入如何变成输出,再用它检查 AI 给出的实现。

新建一个空目录,把下面代码保存为 check.py,在该目录打开终端,运行 python -X utf8 check.py。代码自带示例输入,不需要安装第三方库。

import sqlite3
db=sqlite3.connect(':memory:')
db.execute("create table items(id text not null primary key, count integer not null check(typeof(count)='integer' and count>=0))")
db.execute('insert into items values(?,?)',('a',1));db.commit()
bad=[('a',2),('b',None),('c',-1),('d',1.5)]
for row in bad:
    try:
        with db: db.execute('insert into items values(?,?)',row)
    except sqlite3.IntegrityError: print('rejected',row)
    else: raise AssertionError('非法记录被写入')
assert db.execute('select count(*) from items').fetchone()[0]==1
print('remaining_rows',1)

怎样判断结果符合要求

四组非法输入全部拒绝,表内仍只有最初1行。约束错误必须明确失败,不能在AI汇报里计为“部分成功”。

下方是这份最小示例在本地执行得到的输出。它验证示例程序与断言的关系,不代表任何 AI 模型一次就能生成同样代码,也不构成性能或生产可靠性结论。

rejected ('a', 2)
rejected ('b', None)
rejected ('c', -1)
rejected ('d', 1.5)
remaining_rows 1

SQLite可能进行类型亲和转换,例如整数形式字符串转换后按integer存储,若必须拒绝原始字符串类型,还需入口校验。

声明INTEGER与采用严格数据入口是不同层,按项目环境规定选择。

哪些失败必须停下来处理

已有表若用CREATE TABLE IF NOT EXISTS,不会因新SQL修改旧约束,必须检查真实schema。

其它数据库的类型与NULL语义需要按各自官方文档核对。

接入自己的任务前再核对一次

把每条业务约束配一条正常与失败输入,作为建表迁移的回归。

AI只根据已确认契约生成SQL,不替你确定允许状态、主键归属或删除策略。

资料与适用范围

SQLite支持PRIMARY KEY、NOT NULL与CHECK;CHECK遇到NULL需结合NOT NULL定义。以下链接核对于 2026-10-03;运行环境及额外依赖按本文前述说明。

相关基础可阅读 AI 生成 SQL 怎么用?从表结构写出查询,再在 SQLite 中验证。本文的重点是验证建表SQL的约束,可以把两项检查作为不同步骤保留。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33418.html

赞 (0)
AI小管家的头像AI小管家
AI 写分批数据汇总代码怎样防止漏批?核对分批结果与整批结果一致
上一篇 1小时前
智能体 SQL 函数怎样处理缺失值?注册固定函数,并验证 NULL 不被误填
下一篇 1小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部