php - 空表中的 SELECT MAX(id) 返回 NULL 而不是 0
问题描述
我需要解决有关插入失败时自动递增无效的问题,以防某些唯一字段重复。
数据库
id : primary key(11) NOT NULL // !important: doesn't have auto increment
field : varchar(25) NOT NULL
询问
$field = 'field1';
try{
$conn = new PDO("....");
$stmt = $conn->prepare("INSERT INTO table (id,field) VALUES (((SELECT MAX(id) FROM table as table_max_id)+1),:field)");
$stmt->bindParam(':field', $field, PDO::PARAM_STR);
if(!$stmt->execute())
print_r($stmt->errorInfo());//Column id cannot be null;
}
...
发现的错误是:
列 id 不能为空;
如果表中有记录,则仅在表为空时不会发生此验证错误。
我可以通过放置一个带有 fake 的字段来解决问题id = 1
,但我真的不喜欢它作为解决方案,有什么想法吗?
解决方案
推荐阅读
- ffmpeg - 使用 ffmpeg “重新计时” RTSP 流?
- spring-cloud-contract - 消费者合约需要在 Spring Cloud Contracts 中手动编写吗?
- python - 空手道俱乐部:如何从图中提取类
- linux - 如何在 CLion for linux 中构建项目?
- probability - 使用联合概率将贝叶斯网络与网络图匹配
- node.js - 快速路线不可用 - Heroku
- c++ - 如何定义具有两个相对参数的模板函数
- python - 如何自定义seaborn的热图坐标并将任意数据放在热图中我想要的位置?
- c++ - qlist.h(466):错误 C2061:语法错误:标识符“n”
- c# - 如何为 WPF 环境创建仅源代码的 nuget 包