Как гарантировать и вернуть уникальный идентификатор в 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'
Это то же самое, что вы сделали бы, если бы создавали эти отношения, а не просто добавляли строки.