0

我有两个 MySQL 表,Persons并且Addresses. 在Persons表中,有一列是同名列id_address的外键。中的Addresses列具有ed 值。所以当我想插入新人时,我插入设置为新值的地址,然后我使用的最后一个 id 。id_addressAddressesAUTO_INCREMENTLAST_INSERT_ID()Persons.id_address

所以我的问题是,是否有任何选项可以为这两个表设置批量插入,然后一步插入更多行?

我正在使用 Java 和 MySQL 驱动程序,我需要这个没有 ORM 框架。

编辑:我发现这是不可能的,相关答案在这里: 两个不同的准备好的语句在一个批次中

4

1 回答 1

1

如果其中一个 SQL 查询是 SIMPLE 语句,那么这两个查询都可以批量执行。

这是一个例子

在 col1 中将插入用户指定的值,并在 col2 中存储 last_insert_id 返回的值。

tbl2 只有一列是自动递增的,但你可以没有。的列。唯一的限制是这个查询必须是简单的查询(即它不能是准备好的语句)。

PreparedStatement pStmt = conn.prepareStatement("insert into tbl1 (col1, col2) (select ?, LAST_INSERT_ID());");
int i=0;
while(i < 2) {
   pStmt.setInt(1, 20);
   pStmt.addBatch("INSERT INTO tbl2 values();");
   pStmt.addBatch();
   i++;
}
pStmt.executeBatch();

这将首先插入到tbl2 中,然后再插入到tbl1中。

于 2014-08-12T13:23:29.630 回答