使用 MySQL/InnoDB 一致地在 2 个表中创建 2 条记录
假设我有两个表,t1 和 t2
t1 = (id, 姓名), t2 = (id, fid)
t2 中的 fid 是 t1 的外键。
创建行的步骤如下。
- 在 t1 中插入一行,获取 id
- 使用该 id 并将其作为 fid 插入到 t2 中。
我的问题是:
由于事务未提交时t1的id是未知的,那么如何执行对t2的插入?
Consider I have two tables, t1 and t2
t1 = (id, name), t2 = (id, fid)
The fid in t2 is a Foreign Key to t1.
Steps to create rows as following.
- Insert a row in t1, get the id
- Use that id and insert as fid in t2.
My problem is:
Since t1's id is unknow when the transaction is not committed, so how to perform the insertion to t2?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果 id 在 table1 中自动递增,那么您可以执行以下操作:
这来自 MySQL 参考手册。
编辑:如果我插入 3 个表 t1、t2、t3 怎么样?t2 和 t3 的 fid 都等于 t1。但是当t3插入fid时,LAST_INSERT_ID()属于t2,而不是t1。
然后你可以做这样的事情:
If id is auto-incremented in table1 then you can do something like this:
This comes from the MySQL Reference Manual.
EDIT: How about if I am inserting 3 tables t1, t2, t3 Both t2 and t3 have a fid equal to t1. But when t3 insert the fid, the LAST_INSERT_ID() is belong to t2, not t1.
Then you could do something like this: