如何在插入时获取插入行的id?

时间:2011-03-28 22:42:59

标签: mysql auto-increment

我想在插入该行时创建AUTO-INCREMENT字段的唯一哈希。类似的东西:

INSERT INTO `table` (`hash`,`salt`) VALUES (MD5(CONCAT(`id`,`salt`)),'1234789687');

是否可以使用我插入的行的AUTO-INCREMENTED id?或者我是否必须等到它被插入以通过PHP或其他东西获取它?

2 个答案:

答案 0 :(得分:1)

我不确定,但真的怀疑这是可能的。我明白为什么你会想... ...插入行并不是那么优雅,然后立即更新它。

我会考虑你是否真的需要在数据库中存储哈希,或者如果你可以在选择期间计算它:

选择MD5(CONCAT(idsalt))FROM表WHERE ...

答案 1 :(得分:1)

简短的回答是不 - 这是不可能的。如果您的数据库具有较低的事务量,那么使用与select max()类似的内容(易受干扰)并发可能不是问题:Can you access the auto increment value in MySQL within one statement?

我会跟随php中的插入更新

update `table`
set `hash` = MD5(CONCAT(`id`,`salt`))
where `id` = LAST_INSERT_ID();