我是ASP.NET的 我的ORM查询类他没有对表进行加锁的功能,
然后我现在要对他添加一个加锁的功能,但为了不对他改动太多
麻烦大家帮我看看下面的两个语句,实现的效果有什么区别谢谢
1:
开始事务
SELECT TOP 0 FROM MyTab WITH(TABLOCKX)
SELECT * FROM MyTab
....2:
开始事务
SELECT * FROM {0} WITH(TABLOCKX)
....
然后我现在要对他添加一个加锁的功能,但为了不对他改动太多
麻烦大家帮我看看下面的两个语句,实现的效果有什么区别谢谢
1:
开始事务
SELECT TOP 0 FROM MyTab WITH(TABLOCKX)
SELECT * FROM MyTab
....2:
开始事务
SELECT * FROM {0} WITH(TABLOCKX)
....
解决方案 »
- sql字符串操作
- SQL2000升级到SQL2005有哪些需要注意的地方,请指点.
- 做套打时想实现可以预览但有些内容无需打印如何实现 fastreport或reportmachine
- 有一个字符变量a,表b有一个字段包含用逗号隔开的字符,怎样列出表b中包含变量a的所有行?
- 表中有500万条记录,要求随机选择1000条,使用order by newID,结果速度非常慢,要5分钟!请高手解决!100分,在线等
- 能不能自己写个程序把Excel里的数据导入 SQL Server里面?
- 存储过程中如何使用临时表?
- 用recordsource绑定后还用不用USER打开
- MS-SQL SERVER2000个人版
- sp_addlogin
- sql server 里是否存在 类似应用程序里的全局变量
- 查找不包括在字段值记录里面的语句怎么写
但是我不能写语句
SELECT * FROM MyTab WITH(TABLOCKX)
所以问这里
SELECT TOP 0 FROM MyTab WITH(TABLOCKX)
SELECT * FROM MyTab
能否实现和他一样的功能谢谢
你使用TABLOCKX即 使用表的排它锁。该锁可以防止其它事务读取或更新表,并在语句或事务结束前一直持有。
这样的话,就不能加共享锁了。另外你这个select执行完毕后,也就是这个隐形的事务结束了,锁也就释放了吧。现在要对他添加一个加锁的功能,但为了不对他改动太多
这个改动指的是什么?
1:
事务开始
SELECT * FROM MyTab WITH(TABLOCKX)
... 这里还有很多操作,
结束事务那上面的代码可不可以改为事务开始
SELECT Top 0 FROM MyTab WITH(TABLOCKX)
SELECT * FROM MyTab
... 这里还有很多操作,
结束事务
而查询的时候一般是加共享锁的,那么共享锁就加不上了,其他语句就操作不了了。