mysql 多表插入

 假设有一个用户信息需要插入表只,不过信息需要插入user和user_info表中

其中user_info需要user表中u_id这个主键

一般对应操作为先插入user表,再查询user.u_id 去user_info表插入

demo中发现不行,所以不过查询资料发现 LAST_INSERT_ID() 能将插入过之后的id进行使用,无需查询

插入示例;

INSERT INTO user (username,pswd) VALUES ("张三","123");

SET @id = LAST_INSERT_ID():

INSERT INTO user_info (u_id,phone,email) VAULES (@id,"13145678895","xasd@qq.com");

或者
INSERT INTO user_info (u_id,phone,email) VAULES ((SELECT LAST_INSERT_ID()),"13145678895","xasd@qq.com");

插入查询id;

INSERT INTO user (username,pswd) VALUES ("张三","123");

SET @id = LAST_INSERT_ID():
SELECT @id;

OR 

SELECT LAST_INSERT_ID():

不过需要注意,只有自增长的主键才能进行该操作

golang 使用gorm库进行操作

 

 实际代码

    s1 := "insert into curriculums (c_name,u_id,price) values(?,?,?);"
    s2 := "set @id = LAST_INSERT_ID();"
    s3 := "insert into catalog (c_id,name,url) values (@id,?,?);"
    
    conn.Exec(s1,"golang语言" , 1 , 89.99).Exec(s2).Exec(s3,"golang语言test","https://www.xxx.com")

实际结果

 

注意:

其他来源

https://www.cnblogs.com/seedling/p/9231254.html

  

原文地址:https://www.cnblogs.com/zengxm/p/13429940.html