gpt4 book ai didi

java - 带有 Statement.RETURN_GENERATED_KEYS 的 MySQL 批处理 stmt

转载 作者:行者123 更新时间:2023-11-29 07:04:32 24 4
gpt4 key购买 nike

我想批量执行 2 条 sql 语句。第一个语句是一个插入,它使用自动生成的值作为其 ID。第二条语句是对另一个表的插入,但它需要使用上面自动生成的值作为插入值的一部分

类似的东西(其中 id 只是为了显示它未在 sql 中定义的自动生成的字段

stmt.addbatch(insert into table1("id_auto_generated", "foo"));
stmt.addbatch(insert into table2("table1_id", "boo"));

我现在的做法是在我的第二个 sql 中使用它

insert into table2(LAST_INSERT_ID(), "boo");

问题是即使在批处理语句中它也很慢,因为我的批处理可能有 50,000 个插入。

我想切换到准备好的语句,但不知道如何将 Statement.RETURN_GENERATED_KEYS 或 LAST_INSERT_ID() 与准备好的语句一起使用。

最佳答案

我不确定这是不是您可以使用 addBatch 执行此操作的方法,除了您使用的方式。另一件事是放弃 addBatch() 方法并尝试关闭自动提交。然后您可以使用 stmt.getGeneratedKeys();。像这样的东西:

connection.setAutoCommit(false);
stmt.executeUpdate("insert into table1(\"id_auto_generated\", \"foo\") ...");
DatabaseResults results = stmt.getGeneratedKeys();
// extract the id from the results
stmt.executeUpdate("insert into table2(\"table1_id\", \"boo\") ...");
... many more stmts here
connection.commit();
connection.setAutoCommit(true);

希望这对您有所帮助。

关于java - 带有 Statement.RETURN_GENERATED_KEYS 的 MySQL 批处理 stmt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8157139/

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