Как гарантировать и вернуть уникальный идентификатор в MySql со многими пользователями на одном клиенте - PullRequest
0 голосов
/ 30 октября 2018

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

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

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

Таблица 3 определяет взаимосвязь между фруктами и категориями с помощью двух столбцов «Fruit_ID» и «Cat_ID».

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

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

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

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

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

1 Ответ

0 голосов
/ 30 октября 2018

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

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

...