Как гарантировать и вернуть уникальный идентификатор в MySql со многими пользователями на одном клиенте

Итак, я работаю над базой данных MySQL с тремя таблицами:

Таблица 1 определяет фрукты с такими столбцами, как "имя", "цвет", "вкус" и "Fruit_ID".

Таблица 2 определяет категорию со столбцами, такими как "имя", "описание" и "Cat_ID".

Таблица 3 определяет отношения между фруктами и категориями, с двумя столбцами, "Fruit_ID" и "Cat_ID".

Всякий раз, когда фрукт вставляется, он должен соотноситься с категорией с использованием таблицы 3. Мой первоначальный план состоял в том, чтобы сделать автоинкремент Fruit_ID и Cat_ID автоматически и использовать этот метод, но проблема заключается в том, что в моей архитектуре несколько пользователей используют только одно клиентское соединение, а только гарантированно будет правильным для каждого клиента, afaik.

Поэтому у меня вопрос: какой SQL-запрос я могу использовать, чтобы при вводе фрукта в таблицу 1 в таблице 2 использовался правильный Fruit_ID для его классификации?

Кроме того, я открыт для реструктуризации моей базы данных, если это не лучший способ создать такую ​​ассоциацию (я новичок в архитектуре баз данных).

Я не открыт для использования хранимых процедур в SQL.

Заранее большое спасибо!

1 ответ

Решение

Если вы не можете использовать LAST_INSERT_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'

Это то же самое, что вы сделали бы, если бы создавали эти отношения, а не просто добавляли строки.

Другие вопросы по тегам