这个问题在这里已经有答案了:
当max函数为空时,如何用max函数设置0(2个答案)
两年前关门了。
我需要纠正一个关于失败插入的无效自动增量的问题,以防某些唯一字段被复制。
数据库
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不能为空;
仅当表为空时,如果表中有记录,则不会发生此验证错误。
我可以用一个假的来解决这个问题 id = 1
,但我真的不喜欢它作为解决方案,有什么想法吗?
1条答案
按热度按时间00jrzges1#
使用
COALESCE
要用其他内容替换空表达式,请执行以下操作:我建议使用
AUTO_NUMBER
字段而不是生成id。