如何使用外键值向MySQL输入数据?

How to enter data to MySQL by using foreign key value?

提问人:Him 提问时间:10/24/2023 最后编辑:BarmarHim 更新时间:10/25/2023 访问量:48

问:

我有 2 张表:

  • 表 1 - 产品(product_id、product_name、价格)
  • 表 2 - ORDERS(order_id、product_id、数量),其中 product_id 是表 1 中的 FOREIGN KEY

我有一个产品:

product_id=1
product_name='Computer'
price=2500

如何使用表 PRODUCT 中的product_name而不是输入product_id,将新数据输入到 ORDERS 表(即添加新订单)。我想输入(例如在存储过程中)product_name(例如“计算机”),并在输出中将一个新行添加到具有相关product_id(即 1)的表 ORDERS 中

如果我使用INSERT命令将数据输入到表ORDERS中,我需要将值写为: (1,1,2)- order_id、product_id、数量。 但是我想写成:(1, 'Computer', 2),以便它自动将 1 而不是 'Computer' 添加到表 ORDERS。

mysql 过程

评论

0赞 Rob Eyre 10/24/2023
您的产品名称是否唯一?如果是这样,您可以编写一个存储过程,用于从产品名称中查找相关 ID,然后运行 INSERT 语句
1赞 Lk77 10/24/2023
这对我来说真的没有意义,它是一个 id,你必须提供一个 id
0赞 Barmar 10/24/2023
@Mickmackusa我敢打赌这是一个很好的骗局,但我不知道该搜索什么。

答:

0赞 Adarsh 10/25/2023 #1

如果已将其创建为product_id,则期望在插入时提供 id 本身,而不是该 ID 的值。这里可以做的一件事是在插入语句中有一个子查询:

insert into ORDERS (order_id, product_id, quantity)
values (1, (select max(product_id) from PRODUCT where product_name='Computer'), 2);

子查询将获取传递的字符串的product_id。我使用了max(product_id),以防万一您在PRODUCT表中有重复项。

请注意,如果您使用的是存储过程,那么也可以使用声明的变量作为两个步骤来完成。

评论

0赞 Him 10/25/2023
行得通!谢谢你,伙计