使用需要相互引用的记录填充两个表的最佳方法是什么?
在两个表中填充记录的最佳方法是什么,每个表都需要引用另一个表的主键?
我的想法是,要么在它们之间建立一个“链接”表,一旦两者都写入数据库,就会填充该表,或者通过以下复杂的一系列命令,
Insert1
get identity1
Insert2
get identity2
update 1
在连接到 mySQL 数据库并保持完整性的同时,您如何在 PHP 中执行此操作?
您是否需要使用事务,如果需要,您将如何进行?
What is the best way to populate records in two tables that each need a reference to the primary key of the other?
My thoughts are either having a "link" table between them which is populated once both have been written to the db or by the following complex series of commands
Insert1
get identity1
Insert2
get identity2
update 1
How would you do this in PHP whilst connected to a mySQL Database and maintain integrity?
Would you need to use transactions, if so how would you go about doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我能问一下为什么这些表需要互相引用吗? 如果是直接 1:1 那么我建议将外键放在其中一个表中。 查找也同样简单。 并且您的外键可以得到正确执行。 否则,您会遇到先有鸡还是先有蛋的情况,其中两个表都需要相互引用。 但需要先创建一个。 这意味着在某个时刻您的数据库将处于不一致状态。
Can I ask why the tables need to reference each other. If it is a straight 1:1 then I would suggest just putting the foreign key in one of the tables. the lookup is just as easy. And your foreign key can be properly enforced. otherwise you run into a chicken/egg scenario where the tables both need to reference each other. but one needs to be created first. This means at a certain point your database will be in a non consistent state.
如果您确实必须这样做,那么一定要使用事务 - 以避免孤立记录
If you really must do it , then definitely use transactions - to avoid orphan records
你需要使用交易。 如果您使用 InnoDb 存储引擎(但不适用于 MyIsam),MySql 在较新版本中支持此功能。
You need to use transactions. MySql supports this in newer versions, if you use the InnoDb storage engine (But not for MyIsam).