我有两个表:message
和message_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
链接)。是否有可能使用单一陈述来实现这一目标?
答案 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;