我一次插入多行,如下所示:
INSERT INTO person VALUES ('joe', 50), ('jon', 24);
然后我需要使用他们的 id 将上面的内容链接到另一个表。通常我会使用LAST_INSERT_ID()
INSERT INTO hobbies VALUES (LAST_INSERT_ID(), "golf");
但这对于插入多个值是不可行的LAST_INSERT_ID()
返回第一个插入行的 id。
我可以增加LAST_INSERT_ID()
在每个爱好插入之后,但假设所有人员行都已成功插入。
另一种选择是一次插入人员行,但我不知道这是否会影响性能?
使用单个语句插入值并将它们包装到事务中,例如:
START TRANSACTION;
INSERT INTO person VALUES ('joe', 50);
INSERT INTO hobbies VALUES (LAST_INSERT_ID(),'golf');
COMMIT;
您可能会受到轻微的性能影响,但这应该会给您带来一致的结果。增加返回值LAST_INSERT_ID()
不安全,因为可能存在并发插入修改了AUTO INCREMENT
value.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)