MySql一次在多个表中插入数据

时间:2010-04-26 10:27:44

标签: mysql insert

我有一个关于在多个表中插入数据的查询..

我有两张桌子。一个是项目表,第二个是字段表。

字段表中项目表引用的itemid。

我想一次只用一个查询在两个表中插入数据。

关于它的任何想法?

3 个答案:

答案 0 :(得分:1)

您应该考虑使用transaction中包含的两个INSERT操作。该交易将使多个操作以原子方式行事。请注意,您需要使用MySQL中的InnoDB存储引擎来使用事务。

答案 1 :(得分:0)

首先,你必须在一个表中插入数据,而不是在使用第一个表的主键mysql函数接收lastinsertid之后。使用此值,您可以在另一个表中插入数据。

答案 2 :(得分:0)

也许trigger会有所帮助。我会给你一个例子来做到这一点。

假设您的表ITEM包含ITEM_ID字段,如下所示:

ITEM
---
ITEM_ID (PK)

另一个表是ITEM_DETAIL以及其他一些字段:

ITEM_ID
---
ITEM_ID (PK auto_increment)
ITEM_NAME

然后构造一个触发器,当插入发生时将调用该触发器。像这样:

CREATE TRIGGER `ITEM_DETAIL_INSERTION` AFTER INSERT ON `ITEM_DETAIL`
FOR EACH ROW
BEGIN
INSERT INTO `ITEM` (`ITEM_ID`) VALUES (NEW.ITEM_ID);
END;

当您插入ITEM_DETAIL表时,将触发此触发器。这允许您不要显式编写其他代码以插入ITEM表。请注意,您应修改代码以插入ITEM_DETAIL。

使用触发器的另一个好处是,在ITEM_DETAIL上随时随地插入此触发器。也许是存储过程,批量插入等。