【问题标题】:Mysql Insert get ID then insert returned IdMysql插入获取ID然后插入返回的ID
【发布时间】:2014-09-18 16:15:04
【问题描述】:

当执行多个 MySQl 语句时,有没有办法可以获取最后插入的 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

基本上我想同时在两个表上插入,在表一上插入然后使用该值在表二上插入 而不是在表一然后在表二上插入。

【问题讨论】:

    标签: mysql database mysql-insert-id


    【解决方案1】:

    是的,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, '...');
    

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2012-01-15
      • 2017-03-26
      • 2011-11-06
      • 2014-09-06
      • 2011-06-01
      • 2017-02-08
      • 1970-01-01
      相关资源
      最近更新 更多