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`); 

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

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

  1. напишите это как два запроса и выполните их как пакет
  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()); 

Вы всегда можете сделать что-то подобное

 INSERT IGNORE INTO `table2` VALUES ((select id from table1 where col="value"), 3, 4, 5) 
 INSERT INTO designation as de, department as da, profile as pr (designation_name, depart_id, id, username, department, designation) select de.designation_name, de.depart_id,da.id, pr.username, pr.department, pr.designation from designation, department, profile de.designation_name='project manager' AND de.id='1' OR de.depart_id='2' AND de.id='2' OR da.id='2' OR pr.username='kapil.purohit' AND pr.id='9' AND pr.status='1' OR pr.department='1' AND pr.id='9' OR pr.designation='3' AND pr.id='9' AND pr.status='1' WHERE de.id = da.id AND da.id = pr.id AND de.id = pr.id AND ORDER BY de.id DESC 
Давайте будем гением компьютера.