2 个回答

上面那位道友说的没错,开启事务,但没说到怎么返回自增id。
mysql可以获取上一次插入的自增id值,但不建议这么写。

begin;
insert into A(username) values('AA');
select @id:=last_insert_id() ; #这个值就是上一次插入的自增id值
insert into B(date,planid) values('4-3',@id);
commit;

正常select @id:=last_insert_id()这步不用自己处理,后端框架代码都会有封装好的,不然每次写last_insert_id()是非常不美观的。
例如java的mybatis是这么获取的:

<!--插入记录并获取刚插入记录的主键-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="Users">
   insert  into users (name ,phone) values (#{name},#{phone});
</insert>
@Test
public void test(){
  Users users = new Users();
  users.setName("kobe");
  users.setPhone("13111112222");
  int inserCount = usersDao.insert(users); //返回影响行数
  System.out.println(users.getId);  //自增主键id在插入后就会被赋值,直接取值就可以获取
}

开启事务

插入第一张表
插入第二张表

关闭事务

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题