Вставка автоинкрементного первичного ключа в другую таблицу (для объединения позже) - PullRequest
3 голосов
/ 15 сентября 2009

Я довольно новичок в MySQL, и я надеюсь, что все правильно. Я настроил базу данных с 3 таблицами со столбцами, как показано ниже (первичные ключи - PK):

Users стол

  • UID (PK)
  • имя пользователя

Directories таблица

  • UID
  • путь
  • Проект

DirInfo стол

  • infoID (PK)
  • размер
  • dateofcheck
  • существует
  • pathID

Когда я вставляю значения NULL в Directories.pathID, я получаю новый pathID (автоинкремент). Как я могу вставить этот же путь к DirInfo.pathID?

Должен ли я выполнить несколько запросов к INSERT и SELECT, чтобы поддерживать актуальность каждого столбца в каждой таблице, или я делаю что-то неправильно.

1 Ответ

5 голосов
/ 15 сентября 2009

Функция LAST_INSERT_ID() возвращает последнее значение, выделенное столбцом с автоинкрементом во время INSERT. Вы можете использовать это впоследствии при вставке в зависимую таблицу.

INSERT INTO Directories (pathId) VALUES (NULL); -- auto-increment
INSERT INTO DirInfo (pathId) VALUES ( LAST_INSERT_ID() );

Или вы можете установить пользовательскую переменную MySQL, чтобы использовать ее повторно.

INSERT INTO Directories (pathId) VALUES (NULL); -- auto-increment
SET @pathId := LAST_INSERT_ID();
INSERT INTO DirInfo (pathId) VALUES ( @pathId );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...