мне нужно вставить некоторые данные в таблицу «компании» со столбцами:
company_id | название компании
и в то же время (из той же формы) в другую таблицу contact_persons:
имя_контакта | Идентификатор компании
где company_id должен быть значением из таблицы ‘companies’, где company_id — это PK и AI.
Можно ли сделать это в ОДНОМ одном шаге вместо того, чтобы вставлять сначала company_name, а затем читать таблицу ‘companies’ и извлекать ‘company_id’, чтобы вставить ее во вторую таблицу (‘contact_persons’)?
Я не уверен, что это возможно, но это было бы гораздо более элегантно и эффективно …
Заранее спасибо.
Вы можете сделать это с помощью LAST_INSERT_ID()
чтобы получить последний идентификатор автоинкремента из Companies
таблица и вставка того же в другую таблицу. что-то вроде
INSERT INTO companies (company_name) VALUES ('test');
SET @last_id_companies = LAST_INSERT_ID();
INSERT INTO contact_persons (contact_name, company_id)
VALUES ('test', @last_id_companies);
Не в одном операторе, а в одной транзакции, поэтому они выполняются одновременно и откатываются.
START TRANSACTION;
--Your statements here
COMMIT;