A:id,userid,roleid
B:userid
A:id是随机生成的uuid,roleid是写死的,userid是查询出来的
insert into A(id,userid,roleid)
select UUID(), b.id,'-20' from B b ;
注意:使用这种方式需要注意的是,在默认的事务隔离级别下,扫描B表的时候会锁表,扫描到哪行会把哪行锁住,因此,插入的时候注意尽量在无用户使用的情况下进行。如果B表有where条件时,where条件尽量添加相应索引来避免锁表。
总结:
使用 insert into tablA select * from tableB 语句时,一定要确保 tableB 后面的 where,order 或者其他条件,都需要有对应的索引,来避免出现 tableB 全部记录被锁定的情况。
相关链接:https://blog.csdn.net/weixin_39388918/article/details/105326244