Mysql вставляют в 2 таблицы

Я хочу превратить вставку в 2 таблицы

посещения:

visit_id int | card_id int

регистрация:

registration_id int | type enum('in','out') | timestamp int | visit_id  int

Я хочу что-то как:

INSERT INTO `visits` as v ,`registration` as v
(v.`visit_id`,v.`card_id`,r.`registration_id`, r.`type`, r.`timestamp`, r.`visit_id`) 
VALUES (NULL, 12131141,NULL, UNIX_TIMESTAMP(), v.`visit_id`);

Интересно если его возможное

10
задан Brian Tompsett - 汤莱恩 3 June 2017 в 21:56
поделиться

2 ответа

Похоже, проблема, которую вы пытаетесь решить, состоит в том, чтобы получить значение автоинкремента из строки «посещения» для вставки в «регистрацию». Я прав?

Если да, вы можете просто использовать функцию LAST_INSERT_ID () следующим образом:

INSERT INTO `visits` (`visit_id`,`card_id`) 
VALUES (NULL, 12131141);
INSERT INTO `registration` (`registration_id`, `type`, `timestamp`, `visit_id`) 
VALUES (NULL, 'in', UNIX_TIMESTAMP(), LAST_INSERT_ID());
8
ответ дан 3 December 2019 в 20:40
поделиться

Это невозможно с одним запросом, поскольку INSERT может вставлять данные только в одну таблицу в mysql. Вы можете

  1. записать это как два запроса и выполнить их как пакет
  2. создать хранимую процедуру, которая будет выполнять две команды вставки

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

11
ответ дан 3 December 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: