如何从数据库表中选择最后一个插入ID
我需要从数据库中获取最后一个插入ID
我尝试了last_insert_id()
函数,但这对我不起作用,因为我想在我执行插入查询之前得到此id,当我得到此id时,我执行插入查询
我尝试使用max
作为id,但这有一个问题,如果我有一个删除
id不会被采取
例如,如果我删除了id 10,那么max id将是9但是auto 增量将是11
比我想拥有将由自动增量添加的新ID
示例:我删除了一个id 10,我想要比下一个id更新 11
答案 0 :(得分:2)
你可以:
SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'database_name'
AND TABLE_NAME = 'table_name';
得到你的最后一个身份。
答案 1 :(得分:1)
当插入完成时,自动增量值由数据库本身生成;这意味着在进行实际的插入查询之前无法获取它。 插入一些半空数据 获取已生成的自动增量值 使用该自动增量值进行计算 更新行以使用更新查询的where子句中先前生成的自动增量来放置新/完整数据,以识别正在更新的行。
As pseudo-code :
begin transaction
insert into your table (half empty values);
$id = get last autoincrement id
do calculations
update set data = full data where id = $id
commit transaction
或者您可以关注Using Auto-Increment value in MYSQL Before Insert Trigger?
答案 2 :(得分:0)
在插入之前,您不能也不应该获取最后插入的id。
没有一个理由这样做。只需插入您的数据,获取实际ID,并在其他任何地方使用它。就如此容易。