【发布时间】:2012-04-06 11:09:25
【问题描述】:
我在 MySQL 中有一个表,出于兼容性问题,我们分配了特定的主键,因此它们不能自动递增。
每次我们插入一个新的倒塌(在 PHP 中)时,我们都需要取回最新插入的 ID。听起来可能很愚蠢。但是我们不是从 PHP 生成 ID,它来自一个通用的 AJAX 函数,因此我们不知道包含主键的变量的名称,它总是在变化。
有没有办法使用 PHP 或 MYSQL 来获取为不自动递增的主键插入的最新 ID?
很遗憾,如果没有 auto_increment,mysql_insert_id() 和 last_insert_id() 将无法工作。
谢谢!
【问题讨论】:
-
如果您的主键没有自动递增,那么您应该在插入之前已经知道它。
-
有一个
created_on列并获取最新的。 -
MAX()仅在您确定数量正在增加时才有效,否则请参阅时间戳解决方案。 -
@Arman,这很明显。我希望 OP 能够响应“我不能使用 MAX() 因为它是非升序的,这里有更多信息……”或“当然,我将使用 MAX()”的效果。 :)
-
MAX 是一个非首发,因为两个不同的请求几乎可以同时进行插入,并且您最终可能会得到错误的 id。 Plus max 需要一个操作员说他不知道的列名?这非常令人困惑。你怎么能在不知道你在插入什么的情况下进行插入?只是将一些日期扔到一些随机表中?如果您知道表名,那么您为什么不知道主键名?到底什么是倒塌?
标签: php mysql primary-key auto-increment