我一直在用事务处理golang的sql包弄乱了,我试图了解如何在没有每行"每次插入"往返通信的情况下进行批量upsert。 这里的示例并未真正显示如何进行批量查询。

理想情况下,我将能够进行预准备的查询,并建立要同时发送的upsert列表...但是在这里,每次执行后,我们都会从数据库中返回结果。 关于如何进行此操作有什么建议吗?

这取决于您使用的驱动程序,某些驱动程序/数据库根本不支持事务。

例如,go-sql-driver / mysql支持事务就可以了。

您的代码应该可以运行,或者您可以将其更改为:

还要检查此答案,该答案涉及有关事务的许多详细信息。

因此,尽管我们无法对每个upsert进行单独的查询,但我们确实在单个语句中为批量upserts编写了有效的mysql ...

因此,对于任何想要进行大批量修改的人,都有一种模式可以解决mysql驱动程序的任何限制。