这是我假设的程序产生的事件序列......
- 打开与服务器的连接。
- 运行更新命令。
- 去做一些可能需要大量时间的事情。
- 运行另一个 UPDATE 以反转步骤 2 中的更改。
- 关闭连接。
但是哦,不!在第 3 步中,运行该程序的机器确实爆炸了。查询同一数据库的其他机器现在会认为爆炸的机器仍在工作并做某事。
我想做的就是在打开连接时,但在进行任何更改之前,告诉服务器无论出于何种原因,该连接是否应该关闭,以运行一些 SQL。这样,我可以确定如果出现问题,关闭更新将运行。
(为了抢占答案,我不是在寻找表/记录锁或事务。我不是在这里做资源声明。)
非常感谢,比尔PG。