【问题标题】:Insert Multiple Foreign Keys Simultaneously同时插入多个外键
【发布时间】:2016-06-26 01:05:44
【问题描述】:

我有一个表单,用于收集用户对他们展示的房产的意见(房地产经纪人向潜在的商业承租人展示)。

提交表单后,我将数据插入到三个表中:ShowingBusinessContact。此表单允许创建新的Businesses 和新的Contacts,同时还可以创建新的Showing 记录。

我可以将信息插入到我的Business 表和Contacts 表中,并使用自动递增的primary key

当它们同时提交时,如何将Contacts 中的primary key 作为foreign key 插入到Business 中?

我是否应该为primary keyforeign key 选择一个值表?这方面的最佳做法是什么?

此外,我想将primary keys 中的BusinessContacts 作为foreign keys 插入到我的Showing 表中。我目前在Contacts 中有一个BusinessID 作为foreign key,但也许Contacts 应该是独立的,这样我就可以先Insert,然后再选择后续的foreign keys

最后我应该注意,对于一个数据库,我使用phpMyAdmin 并通过SQL 在.php 页面中插入。

【问题讨论】:

  • 您应该包含您尝试过的代码。并阅读last_insert_id
  • 你将记录插入Contact表,获取最后一个id,在插入记录到Business表时引用最后一个id,获取最后一个id。使用两个最后的 id 将记录存储在 Showing 表中
  • 这就是我的想法。有没有办法将BusinessID 也插入Contacts?还是我需要一张没有foreign keys 的桌子?而@Nathan,使用 last_insert_id,会在我插入Business 时捕获BusinessID,还是需要我将在第一个语句中插入的ContactID
  • phpMyAdmin 不是数据库,它是数据库管理员用来管理其数据库的工具。

标签: php mysql foreign-keys auto-increment


【解决方案1】:

为了在插入行时检索分配给 AUTO_INCREMENT 列的值,MySQL 提供了last_insert_id() 函数。

在为 AUTO_INCREMENT 列分配值的成功插入之后,在同一会话中,在发出任何其他 SQL 语句之前,您可以立即运行查询:

SELECT LAST_INSERT_ID()

从中返回的值可以在后续的 INSERT 中使用。在您的场景中,该值可以作为外键列的值提供。

【讨论】:

  • 有意义,在运行任何进一步的Insert 语句之前选择并存储它
  • 对。 INSERT 语句不会同时运行。他们连续运行。一些 MySQL 客户端库具有用于该 SELECT LAST_INSERT_ID() 语句的“包装函数”,例如 mysqli_insert_id,这使得代码更简洁。 (获取该 auto_increment 值是代码验证插入成功之后的单行值。)不用说......如果你正在使用,你只会使用mysqli_insert_id mysqli_ 接口函数。如果您使用 PDO,或者如果您正在使用(不寒而栗)已弃用的 mysql_ 函数,则不会......
猜你喜欢
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 2022-01-19
  • 2021-03-20
相关资源
最近更新 更多