IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

如何在查询中使用更新锁?


IBM大型机论坛 -> DB2
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
吉塔·米什拉

新的用户


已加入:2005年12月27日
帖子:21
地点:班加罗尔

发布发表:2006年6月22日,星期四,下午12:35
引用回复

您能告诉我从表中选择时如何在查询中使用更新锁吗?

查询如下:



执行SQL



选择SEC_ID_SEED

进入

:TZWSIDS.SEC-ID-SEED



TZWSIDS_SECID_SEED



结束执行
回到顶部
查看用户资料 发送私信
拉扬德拉

活跃用户


已加入:2005年10月18日
帖子:182
地点:英国卢顿

发布发表:2006年6月22日,星期四,下午2:17
引用回复

吉塔

请更具体地讲,您的意思是更新专栏..........或者说您是在谈论更新期间db2持有的锁...

问候
ai
回到顶部
查看用户资料 发送私信
吉塔·米什拉

新的用户


已加入:2005年12月27日
帖子:21
地点:班加罗尔

发布发表:2006年6月22日,星期四,下午5:01
引用回复

实际上,我必须锁定表以进行更新。

方案是:从表中选择一个值,然后用新值更新该值。
在选择更新期间,我想在表上加一个锁,以便在这段时间内没有其他用户可以去更新表。

我可以通过什么方式实现这一目标?
回到顶部
查看用户资料 发送私信
拉扬德拉

活跃用户


已加入:2005年10月18日
帖子:182
地点:英国卢顿

发布发表:2006年6月22日,星期四,下午5:09
引用回复

吉塔

在更新代码中的行时,db2系统会自动处理lock。 (取决于绑定期间选择的隔离级别类型)。

请让我知道更多信息。

问候
ai
回到顶部
查看用户资料 发送私信
令人讨厌的

新的用户


已加入:2005年11月25日
帖子:44
地点:浦那

发布发表:2006年6月22日,星期四,下午5:25
引用回复

我认为在使用隔离级别CS(通常使用)的情况下,已经存在其他用户进行更新的锁定...因此请检查您的异亮氨酸水平..

您可以通过任何方式更改隔离级别并通过编写一些sql查询来调用diff级别锁定。

谢谢 ,
普拉尚
回到顶部
查看用户资料 发送私信
吉塔·米什拉

新的用户


已加入:2005年12月27日
帖子:21
地点:班加罗尔

发布发表:2006年6月23日,星期五,下午5:25
引用回复

感谢您的信息!

我从某处听说,通过在SELECT查询本身中使用``FOR UPDATE'',我们可以锁定表以进行更新。我在上面的查询中尝试了此操作,但遇到了预编译错误。
您对此有任何想法吗?
如果是这样,正确的语法是什么?


吉塔
回到顶部
查看用户资料 发送私信
拉扬德拉

活跃用户


已加入:2005年10月18日
帖子:182
地点:英国卢顿

发布发表:2006年6月23日,星期五,下午5:48
引用回复

吉塔

您有正确的信息。

请找到下面的例子。

例如,您可以使用此光标仅更新employee表的SALARY列:

执行SQL
DECLARE C1游标
SELECT EMPNO,FIRSTNME,MINIDIT,LASTNAME,SALARY
从DSN8710.EMP X
存在的地方
(选择 *
从DSN8710.PROJ Y
X.EMPNO = Y.RESPEMP
和Y.PROJNO =:GOODPROJ)
用于更新工资;

问候,
ai
回到顶部
查看用户资料 发送私信
令人讨厌的

新的用户


已加入:2005年11月25日
帖子:44
地点:浦那

发布发表:2006年6月23日,星期五,下午6:13
引用回复

是的,可以使用FOR UPDATE。

我认为FOR UPDATE用于Cobol-DB2-CICS程序中,该程序用于更新或删除记录
我现在没有代码。

纠正我,如果我错了!
回到顶部
查看用户资料 发送私信
吉塔·米什拉

新的用户


已加入:2005年12月27日
帖子:21
地点:班加罗尔

发布发表:2006年6月23日,星期五,下午6:53
引用回复

我没有在程序(CICS-COBOL-DB2程序)中声明任何游标。我正在使用以下查询:

执行SQL

选择SEC_ID_SEED

进入

:TZWSIDS.SEC-ID-SEED



TZWSIDS_SECID_SEED

用于更新SEC_ID_SEED

结束执行

我尝试使用“ FOR UPDATE”和“ 用于更新SEC_ID_SEED”执行此查询,但再次得到MXXCC = 12。

这个查询有什么问题吗?
我需要使用光标来实现我的目的吗?
回到顶部
查看用户资料 发送私信
令人讨厌的

新的用户


已加入:2005年11月25日
帖子:44
地点:浦那

发布发表:2006年6月23日星期五7:22 pm
引用回复

如果您正在更新单个记录..无需使用光标
但是要更新更多记录,请使用游标,并在定义游标时提供FOR UPDATE ..然后选择记录。
我认为您知道定义cusor的代码是
就在最后,befor最终执行者提到了FOR UPDATE。

试试看!
回到顶部
查看用户资料 发送私信
Anamikak

新的用户


加入时间:2006年5月10日
帖子:64
地点:新加坡

发布发表:2006年6月24日星期六12:03 am
引用回复

艺eth

我很惊讶地看到您正在从表中选择一个列进入主机变量,而没有编写没有WHERE CLAUSE的谓词?如果您谨慎地避免了编码谓词,那么您应该考虑一下abt游标。

Anamika
回到顶部
查看用户资料 发送私信
Anamikak

新的用户


加入时间:2006年5月10日
帖子:64
地点:新加坡

发布发表:2006年6月24日星期六12:11 am
引用回复

我想补充一下,如果您不想在select语句中使用“ for update”子句。然后在您的程序中,您可以发出LOCK TABLE sql语句
执行SQL
锁表TZWSIDS_SECID_SEED
独家模式
结束执行
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> DB2

 


类似主题
话题 论坛 回覆
没有新帖 帮助编写SQL查询 DB2 1
没有新帖 在UPDATE语句中跳过锁定的数据 DB2 9
没有新帖 在合并查询中需要帮助 DB2 4
没有新帖 两个文件之间的组比较/更新 DFSORT / ICETOOL 10
没有新帖 大型机ISPREDIT宏查询 TSO / ISPF 3
搜索我们的论坛:

回到顶部