gpt4 book ai didi

mysql - 使用代理键时插入表

转载 作者:行者123 更新时间:2023-11-29 10:00:44 24 4
gpt4 key购买 nike

我有两个表:

表 1 为:

  • product_id (INT 11) - PK、自动增量
  • 类别 (INT 11) - 索引,FK 到 Table2.category_id
  • 产品 (VARCHAR 255)

表 2 为:

  • category_id (INT11) - PK、自动增量
  • category_name (VARCHAR 255)

现在,当向表 1 添加新产品时,我需要INSERT 类别和产品。但是,category 是一个代理键,与 Table2.category_id 列相关(每个类别都有一个列),这意味着当我插入时,我并不真正知道 category_id,只是category_name

关于如何有效地开展这项工作有什么想法吗?

或者我应该放弃代理键并完全使用自然键?

谢谢

最佳答案

如果您想插入新产品,但只知道category_name,而不知道category_id,那么我们尝试执行INSERT INTO .. .选择:

INSERT INTO table1 (category, product)
SELECT category_id, 'new product'
FROM table2
WHERE category_name = 'some category';

出于多种原因,这对我来说感觉是糟糕的设计。首先,您的应用(例如 PHP)可能会在后台处理 category_id而不是 category_name。因此,理想情况下,您不必查询 table2 即可使此插入工作。这里的另一个问题是两个或多个类别可能碰巧具有相同的名称(但 category_id)。如果可能的话,直接使用主键总是更好。

关于mysql - 使用代理键时插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53028151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com