Member 10850253 Ответов: 1

Как связать разные таблицы и написать в них в mysql


У меня есть база данных с различными таблицами, и в настоящее время я пишу во все эти таблицы. В настоящее время я управляю идентификатором каждой таблицы с помощью счетчика, но дело в том, что мне сказали, что каждый идентификатор должен автоматически увеличиваться, и все таблицы должны быть связаны вместе с идентификатором предыдущей таблицы.

Что я уже пробовал:

Моя структура таблицы такова:
Виды деятельности: idactivity, idResult, Activity
Результаты: idResult, idObjective, Results
Цели: idObjective, idProject
Проекты: idProject, project

Я могу писать во все таблицы, но я не знаю, как связать все таблицы с идентификатором из предыдущей таблицы.

Dileep CV

Если я не ошибаюсь, ваши таблицы могут иметь отношение первичного ключа и внешнего ключа с общим полем из предыдущей таблицы. Также вы можете сделать это с помощью хранимой процедуры.

1 Ответов

Рейтинг:
1

Rossall82

Лично я бы использовал встроенный

LAST_INSERT_ID()
функция. [^] Это вернет самый последний вставленный идентификатор в пределах области действия соединения.

Поступая таким образом, вы будете нуждаться чтобы получить вашего иерархии зависимостей таблица правильная. Судя по всему, последовательность вставок должна выглядеть примерно так:

Insert into Projects (your values)
SET @last_id_from_insert = LAST_INSERT_ID(); --which will return the Id for the new row you have inserted into the Projects table

Insert into Objectives (idProject)
Values (@last_id_from_insert)

SET @last_id_from_insert = LAST_INSERT_ID(); --update our variable to now be the Id of the row we have just inserted into the Objectives table

Insert into Results(idObjective)
Values (@last_id_from_insert)

SET @last_id_from_insert = LAST_INSERT_ID(); --update our variable to now be the Id of the row we have just insObjectives to the Results table

Insert into Activities(idResult)
Values (@last_id_from_insert)


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

Надеюсь, это поможет.