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. 创build一个将执行两个插入命令的存储过程

如果您需要确保两个查询都将写入数据,则可以将这些插入包装在事务中。

这似乎是你试图解决的问题是从“访问”行中插入“注册”的自动增量值。 我对吗?

如果是这样,你可以像这样使用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