【发布时间】:2021-12-31 20:52:28
【问题描述】:
数据库事务的一个常见情况是对多个表执行操作,因为如果一个操作失败,您可以轻松地回滚所有操作。但是,我遇到的一个常见场景是希望将记录插入到多个表中,其中后面的插入需要前面插入的序列 ID。
由于在事务实际提交之前 ID 不会生成/可用,如何才能做到这一点?如果您必须在第一次插入之后提交才能获取 ID,然后执行第二次插入,这似乎首先违背了事务的目的,因为在提交之后(或者如果我根本不使用事务) 如果第二个插入失败,我无法回滚第一个插入。
这似乎是数据库事务的常见用例,我无法想象它不会以某种方式得到支持。这如何实现?
【问题讨论】:
-
通常情况下,生成的ID在插入后可用,而不是在提交后可用。您使用的是哪个数据库?
标签: database postgresql go transactions