我有两张桌子:
表1为:
product_id (INT 11) - PK,自动增量category (INT 11) -索引,FK到Table2.category_idproduct (VARCHAR 255)表2为:
category_id (INT11) - PK,自动增量category_name (VARCHAR 255)现在,当将一个新产品添加到表1中时,我需要同时使用INSERT类别和产品。但是,类别是一个代理键,它与Table2.category_id列有关(每个类别都有一个列),这意味着当我插入时,我并不真正了解category_id,只知道category_name。
对如何使这件事有效运作有什么想法吗?
还是我应该放弃代孕钥匙,全身心投入到自然钥匙中去?
谢谢
发布于 2018-10-28 03:38:50
如果您想插入一个新产品,但您只知道category_name,而不知道category_id,那么我们尝试执行一个INSERT INTO ... SELECT
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)。如果可能的话,直接使用主键总是更好。
https://stackoverflow.com/questions/53028151
复制相似问题