首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用代理键时插入到表中

使用代理键时插入到表中
EN

Stack Overflow用户
提问于 2018-10-28 03:31:37
回答 1查看 631关注 0票数 1

我有两张桌子:

表1为:

  • product_id (INT 11) - PK,自动增量
  • category (INT 11) -索引,FK到Table2.category_id
  • product (VARCHAR 255)

表2为:

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

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

对如何使这件事有效运作有什么想法吗?

还是我应该放弃代孕钥匙,全身心投入到自然钥匙中去?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-28 03:38:50

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

代码语言:javascript
复制
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)。如果可能的话,直接使用主键总是更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53028151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档