关于我之前的帖子,我试图通过设置search_paths
来避免模式前缀,但是,我想尽可能地限制范围,所以我这样做:
BEGIN TRANSACTION;
SET LOCAL search_path to mySchema;
CALL STORED_PROCEDURE();
UPDATE TABLE MYTABLE1(//SOME CODE);
COMMIT;
CALL STORED_PROCEDURE();
现在,proc 有自己的开始、提交语句,所以我想知道该过程是否会尊重它的外部事务,即
stored_procedure
会尊重其父事务块设置的search_path吗?- 如果更新表失败,在过程中完成的操作是否也会回滚?
PL/pgSQL 程序中的BEGIN
和END
与事务命令BEGIN
和COMMIT
/END
无关。他们只是标记一个块。
该过程将使用您的search_path
,除非您在过程中覆盖它。 过程内部的COMMIT
可能需要特殊考虑,但这在这里不是问题,因为无论如何都不允许在从多语句事务调用的过程中COMMIT
。