【发布时间】:2019-02-11 17:34:20
【问题描述】:
我不想使用 mysql 的自动增量,但我想获取 max id+1 作为 ID 插入下一个数据。
我试着做How to get auto increment id by PDO before execute 但没有运气。
$sql = "INSERT INTO checklist ((SELECT MAX(checklist_id)+1), checklist_name ) VALUES (NULL, :checklist_name)";
$pdo_statement = $pdo_conn->prepare( $sql );
$result = $pdo_statement->execute ((array(':maxid'=>NULL,':checklist_name'=>$_POST['checklist_name']));
你能帮我看看应该是什么代码吗?
【问题讨论】:
-
你知道这很危险。如果两个 INSERT 同时命中怎么办?然后,您将从“SELECT MAX(.....)”中获得相同的结果,然后两个 INSERT 语句将尝试插入相同的 ID,从而导致其中一个出现错误。你为什么不想使用自动增量?你的用例是什么?
-
如果您在表中使用
AUTO_INCREMENT列(结合PRIMARY KEY或UNIQUE键),某些MySQL 的功能将得到更好的优化,并且在使用时差异(非常)明显InnoDB 作为表引擎(dev.mysql.com/doc/refman/8.0/en/…)...事实上,每个 InnoDB 表都应该有一个 PRIMARY 或 UNIQUE 键以获得更好的性能我曾经发布过一个关于它的答案(让我看看我是否还能找到它) -
" 事实上,每个 InnoDB 表都应该有一个 PRIMARY 或 UNIQUE 键以获得更好的性能我曾经发布过一个关于它的答案(让我看看我是否还能找到它)“找到它dba.stackexchange.com/questions/48072/…
-
我不想使用 mysql 的自动增量 - 但是为什么呢?它不仅更方便,而且更安全。
标签: mysql pdo insert auto-increment