如何在db2过程中执行行级锁定以确保select和update语句线程安全?

如何在db2过程中执行行级锁定以确保select和update语句线程安全?,db2,procedure,atomicity,Db2,Procedure,Atomicity,我在proc中有一个select语句,它从一个表中查询整数值,然后我将整数值增加一个,我有一个update语句,它更新表中的增量值 我希望在调用获取每个请求中更新的整数值的过程时使其原子化 请帮忙把这个原子化 我试图只使用update命令和内联赋值变量,如 Update table SET col=col+1, @variable = col+1 where ? 但它在sybase db中工作,但在db2中不工作。考虑使用以下语法: 从最终表格中选择columnName(更新表格集column

我在proc中有一个select语句,它从一个表中查询整数值,然后我将整数值增加一个,我有一个update语句,它更新表中的增量值

我希望在调用获取每个请求中更新的整数值的过程时使其原子化

请帮忙把这个原子化

我试图只使用update命令和内联赋值变量,如

Update table SET col=col+1, @variable = col+1 where ?

但它在sybase db中工作,但在db2中不工作。

考虑使用以下语法:

从最终表格中选择columnName(更新表格集columnName=columnName+1,其中…)

这样就不需要两个单独的语句,从而更好地实现并发性

为了获得最佳结果,请确保对
WHERE
子句进行了完全索引,因此您应该检查访问计划以确认这一点


选择正确的隔离级别(在连接级别或语句级别),使事务中的其他语句(如果有)与业务需求相匹配。

考虑使用语法
从最终表中选择columnName(更新您的表集columnName=columnName+1,其中…)
@mao您的评论应该就是答案