如何在一个语句的两个表中执行SQL插入语句?

时间:2014-04-24 14:32:04

标签: mysql sql

我有两个表:messagemessage_content

message
id | customer_id | creation_time | msg_headline | status | order_id 

message_content
message_id | msg | creation_time | employee_id

当我插入新数据时,我需要在两个表中创建一个记录(由id resp。message_id链接)。是否有可能使用单一陈述来实现这一目标?

2 个答案:

答案 0 :(得分:1)

无法使用单个INSERT语句插入两个表。但是有一些选择。其中一个是使用LAST_INSERT_ID()[1]

INSERT INTO `message` (`customer_id`, `creation_time`, `msg_headline`, `status`, `order_id`)
  VALUES (...);

INSERT INTO `message_content` (`message_id`, `msg`, `creation_time`, `employee_id`)
  VALUES (LAST_INSERT_ID(), 'message', default, 1)

在您的实际实现中,您应该切换到prepared statement(和PHP: Prepared Statements - Manual,因为您最初提到过PHP。)

答案 1 :(得分:0)

MySQL不支持在单个INSERT语句中插入多表。 如果我没弄错的话,甲骨文是我唯一知道的那个。

INSERT INTO message VALUES(...)
INSERT INTO message_content VALUES(...)

但是,您可以使用一个事务,并将它们都包含在一个事务中。

START TRANSACTION;
INSERT INTO message VALUES ('1','2','3');
INSERT INTO message_content VALUES ('bob','smith');
COMMIT;

字体:INSERT - Documentation MySQL

TRANSACTION - Documentation MySQL