Mysql数据库sql语句实现多表关联插入

  • Post author:
  • Post category:mysql




前言

	最近在工作中遇到了sql批量插入数据且两张表有关联id的问题。
	A、B两张表,B表存储了A表的id。
	A表虽然是自增id,但在生产环境业务处理中难免会出现并发问题。
	那么sql批量插入数据时B表如何存储的A表的id呢?


提示:以下是本篇文章正文内容,下面案例可供参考



一、解决方法

使用 “LAST_INSERT_ID()”函数。


insert into A (username, password, mobile) values (“张安”, “123321”, “17777777777”);



set @id = LAST_INSERT_ID();



insert into B (a_id, address, consignee) values (@id, "秋冬村", "张杰");



二、LAST_INSERT_ID()会存在并发问题么?



1.不存在并发问题

MYSQL官方给出的描述

https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id

在这里插入图片描述


生成的ID在服务器中以每个连接为基础进行维护。

这意味着函数返回给给定客户端的值是该客户端为影响AUTO_INCREMENT列的

最近语句生成的第一个AUTO_INCREMENT值

。这个值不能被其他客户端影响,即使它们生成了自己的AUTO_INCREMENT值。这种行为确保每个客户机都可以检索自己的ID,而不需要考虑其他客户机的活动,也不需要使用锁或事务。



版权声明:本文为yesmysql原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。