首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储过程尝试读取未提交的数据,而不是将隔离级别指定为读取已提交

存储过程尝试读取未提交的数据,而不是将隔离级别指定为读取已提交
EN

Stack Overflow用户
提问于 2013-10-19 02:46:43
回答 1查看 1K关注 0票数 2

我有一个存储过程,它尝试读取未提交的数据,尽管没有指定读取已提交(*CS)的隔离级别。下面是我的存储过程。

代码语言:javascript
复制
CREATE PROCEDURE SP_TEST_DATA_GET ( IN P_PROCESSNM VARCHAR(17) , 
                                    IN P_Status char(1))
RESULT SETS 1
LANGUAGE SQL
SET OPTION COMMIT=*CS


P1 : BEGIN

DECLARE CURSOR1 CURSOR WITH RETURN FOR
SELECT  DATA
FROM IAS_TEST_DATA
WHERE ( PROCESSNM IS NULL   OR  PROCESSNM = P_PROCESSNM )
AND Status=P_Status ;


OPEN CURSOR1 ;

END P1``

我使用的是Db2 v6 iseries。

如何避免读取未提交的数据,在存储过程中指定隔离级别似乎不起作用。

敬请指教。

EN

回答 1

Stack Overflow用户

发布于 2013-10-19 03:12:50

您似乎误解了事务隔离是如何工作的。"Read committed“的意思就是:此工作单元只能读取其他工作单元提交的数据,并等待未提交更改的锁被释放。您可能想要研究the manual;它特别指出“由另一个激活组更改的任何行(或当前使用UPDATE行锁锁定的行)……在提交之前都无法读取”。

在DB2 for I、v6和更高版本中,您可以在SELECT语句中使用SKIP LOCKED DATA子句来完成您似乎想要的功能。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19456948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档