gpt4 book ai didi

java - 在SQL中对相关表使用批量插入

转载 作者:行者123 更新时间:2023-11-29 12:54:56 25 4
gpt4 key购买 nike

我有两个 MySQL 表,PersonsAddresses。在 Persons 表中,有一个 id_address 列,它是同名的 Addresses 列的外键。 Addresses 中的 id_address 列具有 AUTO_INCRMENT 值。因此,当我想要插入新人员时,我插入将 LAST_INSERT_ID() 设置为新值的地址,然后将最后一个 id 用于 Persons.id_address

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

我正在使用 Java 和 MySQL 驱动程序,并且我需要这个而不需要 ORM 框架。

编辑:我发现这是不可能的,相关答案在这里: Two different prepared statements in one single batch

最佳答案

如果其中一个 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

关于java - 在SQL中对相关表使用批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24219343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com