2

我在 SAP HANA DB SP8 上。嵌套存储过程时如何处理锁?

更具体地说:我有一个名为p_outer的 SP 调用另一个名为p_inner. 通过p_inner锁定一行表。返回 后,里面的行还会被锁定吗?中没有明确的提交语句。服务器的自动提交设置可能设置为 false,但这有关系吗?Tselect ... for updatep_innerp_outerTp_inner

我没有找到记录这个特定问题的文档,也没有找到以前专门针对 SAP HANA 的材料。其他 DBM 可能会以不同的方式处理它。

4

1 回答 1

2

我在你的交叉帖子中回答了这个问题:http: //www.safana.com/message/13458#13458

为方便起见,这里从链接复制的内容:

锁是在事务的上下文中处理的,而不是在命令的上下文中。

因此,即使您将自动提交设置为 on(这是一个会话级别的设置),程序调用也会被执行(包括在中间调用的所有其他程序),并且只有在事务完成之后(通过 ROLLBACK 或 COMMIT )

这样所有的锁都被释放了。

所以,是的,在“内部”调用中被锁定的行仍将被锁定在“外部”调用中。

然而,由于这都是一个单一的事务,“外部”调用当然可以访问被“内部”调用锁定的记录。

于 2014-10-28T22:06:42.947 回答