Mysql插入获取ID然后插入返回的Id
问题描述:
当执行多个MySQl语句时,有没有办法让我可以得到最后插入的ID并将其插入到另一个表中?例如,如果主键是我的第二个表中的外键。Mysql插入获取ID然后插入返回的Id
表一个
user_id | username|
-------------------
1 |userone
2 |usertwo
3 |userthree
表2
contact_id | user_id | contact_name
------------------------------------
12 | 1 | John Doe
18 | 2 | Jane Doe
23 | 3 | An other
基本上我想在同一时间上的两个表中插入,插入上表中的一个,然后使用该值来插入上表二 ,而不是插入表一,然后在表二。
答
是的,函数LAST_INSERT_ID()
返回当前会话中自动增量列生成的最新ID。
所以,你可以插入到你的主表:
INSERT INTO `table1` (username) VALUES ('...');
然后插入子表:
INSERT INTO `table2` (user_id, contact_name) VALUES (LAST_INSERT_ID(), '...');
如果你有多个行插入到子表,子表的主键本身会生成新值,这意味着您必须将该值保存在变量中以多次重复使用。否则,子表的PK将成为新近生成的新值。下面是一个将值保存在MySQL会话变量中的示例:
SET @user_id = LAST_INSERT_ID();
INSERT INTO `table2` (user_id, contact_name) VALUES (@user_id, '...');
INSERT INTO `table2` (user_id, contact_name) VALUES (@user_id, '...');
INSERT INTO `table2` (user_id, contact_name) VALUES (@user_id, '...');