我想知道在连接上执行开始事务并立即将行更新/插入数据库并让该事务挂起几个小时的资源成本是多少。基本上我只想为我的文档管理系统执行“序列号”预订。我的系列是非常自定义的,我希望每当用户按下“添加新文档”按钮时,下一个值将分配到我的系列分配表中。为了分配它,我会在分配表中插入一行。下一次,当一个新用户请求下一个值时,将使用 NOLOCK 提示读取,这样他就会看到我挂起的插入值,这样他也会知道下一个值。如果用户取消添加新文档的表单,我只需对打开的连接执行回滚。如果连接丢失并且我处于“添加”模式,那么我将检查我分配给我的系列的当前事务 id 是否与当前事务 id 匹配。如果没有,那么我会分配另一个。不存在用户因连接丢失而丢失系列的问题。你怎么看?我觉得这是一个非常糟糕的做法,因为它与我在几年软件开发中学到的理念相矛盾:尽可能晚地打开连接并尽快关闭它。
先感谢您!