在mysql中有两个表user表、userContact表。user表(id、name…..),userContact表(id、userId、….)。
本人现在的操作是先添加user表,获取新的userId,然后使用新的userId添加userContact表。
本人的做法是,添加user表就是普通的insert语句。
添加userContact表:insert into userContact (userId …..) values (LAST_INSERT_ID(), ….)
其中,两个表的id都用了自增。
本人测试了可行,但总感觉这样有风险,查了网上说LAST_INSERT_ID()返回最后一个表的id,有点担心。
哪位大神知道,给点建议,谢谢。
本人现在的操作是先添加user表,获取新的userId,然后使用新的userId添加userContact表。
本人的做法是,添加user表就是普通的insert语句。
添加userContact表:insert into userContact (userId …..) values (LAST_INSERT_ID(), ….)
其中,两个表的id都用了自增。
本人测试了可行,但总感觉这样有风险,查了网上说LAST_INSERT_ID()返回最后一个表的id,有点担心。
哪位大神知道,给点建议,谢谢。
解决方案
10
create temporary table _t(id int auto_increment key, v int);
insert _t(v) values(1),(2);
select *,last_insert_id() from _t; — insert 两条, last_insert_id 返回的是首条,而不是最后 一条(最后一个insert的首条)
drop temporary table _t;
insert _t(v) values(1),(2);
select *,last_insert_id() from _t; — insert 两条, last_insert_id 返回的是首条,而不是最后 一条(最后一个insert的首条)
drop temporary table _t;
10
— 在使用的时候,这个值是确定的,例如在上面示例脚本中, insert _t(v) values(1),(2); 之后执行这个
insert _t(v) values(last_insert_id()),(last_insert_id());
这里面的 last_insert_id() 值是固定的,并不会原因是你在 VALUE 里面用了两次就导致值变化
insert _t(v) values(last_insert_id()),(last_insert_id());
这里面的 last_insert_id() 值是固定的,并不会原因是你在 VALUE 里面用了两次就导致值变化