0

所以我正在研究一个包含三个表的 MySQL 数据库:

表 1 定义了一种水果,包括“名称”、“颜色”、“风味”和“水果 ID”等列。

表 2 定义了一个类别,包括“名称”、“描述”和“Cat_ID”等列。

表 3 定义了水果和类别之间的关系,有两列,“Fruit_ID”和“Cat_ID”。

每当插入水果时,必须使用表 3 将其与类别相关联。我最初的计划是让 Fruit_ID 和 Cat_ID 自动递增并使用此方法,但问题是我的架构有多个用户仅共享一个客户端连接,而 LAST_INSERT_ID 是只保证对每个客户都是正确的,afaik。

所以我的问题是,我可以使用什么样的 SQL Query 来确保在表 1 中输入水果时,使用表 2 中正确的 Fruit_ID 对其进行分类?

此外,如果这不是建立这种关联的最佳方式(我是数据库架构的新手),我愿意重组我的数据库。

我不愿意在 SQL 中使用存储过程。

提前非常感谢!

4

1 回答 1

1

如果不能使用LAST_INSERT_ID(),则必须使用查询来获取刚刚插入的项目的 ID。

因此,要添加一行显示苹果是红色的,您可以:

INSERT INTO fruit_category (fruit_id, cat_id)
SELECT f.id, c.id
FROM fruit AS f
CROSS JOIN category AS c
WHERE f.name = 'apple'
AND c.name = 'red'

如果您正在创建这种关系并且不只是添加行,这与您将执行的操作相同。

于 2018-10-30T00:54:31.117 回答