Создайте 2 записи в 2 таблицах последовательно, используя MySQL / InnoDB - PullRequest
0 голосов
/ 21 июля 2010

Предположим, у меня есть две таблицы: t1 и t2

t1 = (id, name), t2 = (id, fid)

fid в t2 является внешним ключом для t1 .

Шаги для создания строк следующим образом.

  1. Вставьте строку в t1, получите идентификатор
  2. Используйте этот идентификатор и вставьте как fid в t2.

Моя проблема:

Поскольку идентификатор t1 неизвестен, когда транзакция не зафиксирована, как выполнить вставку в t2?

1 Ответ

3 голосов
/ 21 июля 2010

Если идентификатор автоматически увеличивается в таблице1, то вы можете сделать что-то вроде этого:

INSERT INTO t1 (name) VALUES ('whatever');
INSERT INTO t2 (fid) VALUES (LAST_INSERT_ID());

Это взято из Справочного руководства MySQL .

РЕДАКТИРОВАТЬ: Как насчет того, чтобы вставить 3 таблицы t1, t2, t3 И t2, и t3 имеют fid, равный t1. Но когда t3 вставляет fid, LAST_INSERT_ID () принадлежит t2, а не t1.

Тогда вы могли бы сделать что-то вроде этого:

INSERT INTO t1 (name) VALUES ('whatever');
SET @id=LAST_INSERT_ID();
INSERT INTO t2 (fid) VALUES (@id);
INSERT INTO t3 (fid) VALUES (@id);
...
...