【问题标题】:Adding a database record with foreign key使用外键添加数据库记录
【发布时间】:2013-05-08 23:54:40
【问题描述】:

假设有一个包含两个表的数据库:一个客户表和一个国家/地区表。每个客户行包含(除其他外)一个 countryId 外键。还假设我们从数据文件中填充数据库(即,不是操作员从 UI 中选择国家/地区)。

这方面的最佳做法是什么?

  1. 是否应该先查询数据库并获取所有国家/地区的所有 ID,然后在插入查询中提供(现在已知的)国家/地区 ID?对于我的“国家”示例来说,这不是问题,但是如果表中有大量被引用的记录怎么办?

  2. 或者插入查询应该使用子查询根据国家名称获取国家ID?如果是这样,如果该国家/地区的记录尚不存在且必须添加怎么办?

  3. 还是其他方法?还是取决于? :)

【问题讨论】:

    标签: mysql database foreign-keys


    【解决方案1】:

    我建议在您的插入查询中使用联接来根据国家/地区名称获取国家/地区 ID。但是,我不知道每个 SGBD 是否都可以做到这一点,而且你没有对你正在使用的那个提供更精确的信息。

    【讨论】:

    • 使用mysql。如果该国家/地区的记录尚不存在怎么办?谢谢。
    • 好吧,我想说您只需要先填充您的国家/地区表...但是当谈到其他数据时,它就不正确了。在这种情况下,需要一种更加程序化的方法:测试值是否存在,如果不插入,则使用新的 id 填充主表中的字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多