设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 百科 > 正文

Oracle和TSQL语句NO LOCK

发布时间:2021-01-21 14:20 所属栏目:128 来源:网络整理
导读:select max(Key) from MyTable with(nolock) 我有这个T-SQL语句但是需要为SQL Server和Oracle使用一个语句,当然Oracle不能识别“with(nolock)”.有没有办法让这个语句在两个数据库上运行.通过Oracle忽略“with(nolock)”或者只使用Sqlserver使用这部分语句或

select max(Key) from MyTable with(nolock)

我有这个T-SQL语句但是需要为SQL Server和Oracle使用一个语句,当然Oracle不能识别“with(nolock)”.有没有办法让这个语句在两个数据库上运行.通过Oracle忽略“with(nolock)”或者只使用Sqlserver使用这部分语句或者一种方式或编码都可以理解.

我使用No lock的原因是因为多个用户正在访问同一个表,我需要在事务期间找到最大值.

Oracle做的事情有点不同,所以我不必担心表锁.

解决方法

您的查询正在执行不同的操作.应该是什么样的查询语义?是否应该返回max(Key),包括SQL Server版本指示的未提交事务的影响?如果是这样

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
select max(Key)
from MyTable;

是相同的语义.语法应该在两个AFAIK上都能正常工作.

如果您想要最后提交的最大值(密钥),则需要更改SQL Server数据库以默认使用读提交的快照隔离,因此它的行为与Oracle类似.或者您可以使用ROWLOCK,READPAST提示实现类似的语义,但之后您又需要两个不同的查询.

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读