需要Auto_increment列值

时间:2017-09-22 13:03:32

标签: mysql

假设我有一个包含auto_increment列的表,并且多个插入同时进行:

INSERT INTO service_request.service_request_data(emp_id,sales_force_id,type_of_request,rfp_rfi,closure_deadline,mode_of_submission,submission_date,clarification_date,extention_date,region,item_status,participants_status,reviewer_status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

而且,我需要为插入的数据自动增加id。我怎么能得到它。可能是在插入之后很多插件都会发生。

请帮助我找出这个。

1 个答案:

答案 0 :(得分:0)

您可以使用MySQL的函数LAST_INSERT_ID()Here是文档。

该功能每个会话(换句话说,每个连接)。如果来自不同会话(连接)的多个INSERT同时进行,则每个会话(连接)将返回其最后插入的值,与其他会话(连接)无关。

但请仔细阅读文档,因为该功能部分令人惊讶。例如,如果相同的会话同时插入多个 ,则LAST_INSERT_ID()将返回的ID < / em>已插入的行。因此,您最终必须将其与ROW_COUNT()组合才能实际获取插入的最后一行生成的ID。

此外,您必须考虑LAST_INSERT_ID()在事务,触发器和事件中的工作方式,以及在事务回滚或提交时它的作用。

ROW_COUNT()也可能是一个具有惊人行为的复杂野兽。例如,查看在INSERT ... ON DUPLICATE KEY UPDATE语句之后使用它时的作用。全部都在documentation,您可能需要多次阅读以完全理解它(我必须)。