社区
MS-SQL Server
帖子详情
###如何设置对表的独占操作,以及如何获取表是否被独占的状态?###
nik_Amis
2008-03-12 05:39:48
有数据表A,用户X在SELECT ,UPDATE等 A的记录之前,设置对A的独占方式打开,此时任何其他用户在对这张表访问之前会先询问是否已经被独占打开,若独占打开则不能作任何操作,X操作结束之后取消独占,其他用户才可以访问此表
1。设置独占打开一张表
2。获取表的状态
请问各位高手,SQL 里面是否有这样的语句?
...全文
352
42
打赏
收藏
###如何设置对表的独占操作,以及如何获取表是否被独占的状态?###
有数据表A,用户X在SELECT ,UPDATE等 A的记录之前,设置对A的独占方式打开,此时任何其他用户在对这张表访问之前会先询问是否已经被独占打开,若独占打开则不能作任何操作,X操作结束之后取消独占,其他用户才可以访问此表 1。设置独占打开一张表 2。获取表的状态 请问各位高手,SQL 里面是否有这样的语句?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
42 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hui_hui_2007
2008-04-07
打赏
举报
回复
关注
nik_Amis
2008-04-07
打赏
举报
回复
up
nik_Amis
2008-03-18
打赏
举报
回复
up
rouqu
2008-03-13
打赏
举报
回复
[Quote=引用 27 楼 nik_Amis 的回复:]
我的需求是这样的:
A用户每天要对表P做查询更新插入数次,数据量每次最少2000条,最多可能10万
在更新期间不允许其他任何用户访问该表
大家看看,除了我上面的解决方案还有别的什么好的办法么?
[/Quote]
按照系统设计 表P做更新插入期间 其他用户可以访问表未被更新的记录行 为什么你不让访问呢?
rouqu
2008-03-13
打赏
举报
回复
你用条件判断应该说效果有限 因为你去判断什么级别(TAB、PAG、RID)上的什么锁(S/IS/U/IX/X)呢?
判断TAB意义不大(TAB为X的情况很少 大多数IX/S 你判断之后怎么操作?) 判断PAG也是(你怎么得到当前要更新的表范围对应的PAG并和当前锁定的PAG做比较)
如果你判断通过 系统可能还会判断一遍 如果你判断不通过 实际上可能无并发问题
rouqu
2008-03-13
打赏
举报
回复
Method I
set transaction isolation level serialiable
begin tran
select * from tableP
insert/update...
commit tran
set选项设置对当前连接所有SELECT一直启效 在查询更新插入操作完成之前 表被锁定(Select之后S锁不释放)
nik_Amis
2008-03-13
打赏
举报
回复
我的需求是这样的:
A用户每天要对表P做查询更新插入数次,数据量每次最少2000条,最多可能10万
在更新期间不允许其他任何用户访问该表
大家看看,除了我上面的解决方案还有别的什么好的办法么?
nik_Amis
2008-03-13
打赏
举报
回复
为啥意义不大?
rouqu
2008-03-13
打赏
举报
回复
BOL中不是有Result Sets嘛 LZ 不是我说 你这个程序做出来了意义也不大
netcup
2008-03-13
打赏
举报
回复
[Quote=引用 15 楼 happyflystone 的回复:]
11楼来解释 呀
[/Quote]
就是update table set pkid=pkid where pkid=@id
这样也可以起到锁表的作用。
rouqu
2008-03-13
打赏
举报
回复
[Quote=引用 21 楼 nik_Amis 的回复:]
有没有办法不用SP_LOCK取得锁定表?
这玩意儿,没法加查询条件,要在程序里面逐条判断,很不爽的
[/Quote]
insert into ... exec sp_lock
nik_Amis
2008-03-13
打赏
举报
回复
没人知道?
nik_Amis
2008-03-13
打赏
举报
回复
有没有办法不用SP_LOCK取得锁定表?
这玩意儿,没法加查询条件,要在程序里面逐条判断,很不爽的
ojuju10
2008-03-13
打赏
举报
回复
对表进行锁定
nik_Amis
2008-03-13
打赏
举报
回复
[Quote=引用 34 楼 rouqu 的回复:]
引用 32 楼 tongki_8 的回复:
楼主想法有问题
没错 LZ似乎认为数据库就应该在单用户状态下使用
[/Quote]
晕倒。。。
rouqu
2008-03-13
打赏
举报
回复
11F的方法是另外建立一张表 专门维护已被锁定表的状况吗?
yanjinbin01
2008-03-13
打赏
举报
回复
To :34楼
这种想法没什么问题,有时候你也会遇到 需要阻塞其他操作,让他们排队 而不是并发.(丢失性能是一定的但要的就是这效果.)
yanjinbin01
2008-03-13
打赏
举报
回复
维护数据完整行.
从你的需求来说
1.事务解决不可靠的(事务是行级锁定,对你这根本不使用)
2.12楼做标记方法,是可以的(用存储过程实现,一条sql语句实现不了,标记用全局变量@@xxx)
-- 并发问题,这里要自己定义一个循环+标记 来阻塞,等上次操作完下面的操作才能开发.
3.锁定表也是可行的(存储过程实现,一条sql语句实现不了.lock table unlock table )
总的来说这个.
-- 这个没问题,在mysql(sql server里面我不太清楚)里面锁定表后 并发操作会自动等前面解锁后在操作.
rouqu
2008-03-13
打赏
举报
回复
[Quote=引用 32 楼 tongki_8 的回复:]
楼主想法有问题
[/Quote]
没错 LZ似乎认为数据库就应该在单用户状态下使用
rouqu
2008-03-13
打赏
举报
回复
update/insert进行过程中 对应记录S锁不能加 也即是处于pengding的状态
加载更多回复(22)
【MySQL】锁(十三).pdf
MySQL资源包内容推荐 内容概要: 本资源包包含了一系列关于MySQL的详细资料和教程,旨在帮助用户全面了解和掌握MySQL数据库的使用和管理。内容涵盖了MySQL的安装与配置、SQL语言基础、数据库设计、性能优化、安全配置、备份与恢复等多个方面。此外,还包含了一些高级话题,如分区
表
、复制与集群、存储引擎选择等。资源包形式多样,包括文字教程、案例分析、视频教程、实践练习等,以满足不同用户的学习需求。 适用人群: 初学者:对于刚开始接触MySQL的用户,本资源包提供了从入门到进阶的详细教程,帮助用户快速掌握MySQL的基本
操作
。 数据库管理员(DBA):对于需要管理多个MySQL数据库的管理员,本资源包提供了丰富的管理和维护技巧,帮助管理员提高工作效率。 开发者:对于使用MySQL进行应用开发的开发者,本资源包提供了深入的技术解析和最佳实践,帮助开发者优化数据库性能,提升应用质量。 技术爱好者:对于对MySQL技术感兴趣的技术爱好者,本资源包提供了丰富的技术资料和案例分析,帮助爱好者深入了解MySQL的核心技术。 使用场景及目标: 学习MySQL基础:用户可以通过本资源包学习MySQL的基础知识,包括SQL语言、数据库设计等。 性能优化:对于已经在使用MySQL的用户,本资源包提供了性能优化的方法和技巧,帮助用户提高数据库的运行效率。 数据库管理:数据库管理员可以利用本资源包中的技巧和建议,提高数据库管理的效率和质量。 解决实际问题:对于在使用MySQL过程中遇到的问题,用户可以在本资源包中找到相应的解决方案。 通过学习和使用本资源包,用户可以达到以下目标: 熟练掌握MySQL的基本
操作
和管理技能。 能够根据业务需求设计和优化数据库结构。 深入理解MySQL的核心技术和原理。 解决在使用MySQL过程中遇到的各种问题。 其他说明: 本资源包将持续更新,以反映MySQL技术的最新发展和变化。 用户可以在资源包的评论区或相关社区中交流学习心得和经验,共同解决问题和分享资源。 如有任何疑问或建议,欢迎联系我们,我们将尽快回复并提供帮助。
MySQL Metadata Locking
MySQL Metadata Locking
Access数据库和
表
的使用学习教案.pptx
Access数据库和
表
的使用学习教案.pptx
Oracle数据库管理语句
Oracle数据管理语言的相关知识.与大家分享交流!
DB2常用命令大全.txt
介绍了DB2常用命令,很多基础语句包括创建
表
,修改
表
等等
MS-SQL Server
34,838
社区成员
254,632
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章