数据库事务操作会锁住table表吗

时间:2021-10-15 17:46:08
某一个table在事物里做新增操作,这个事务没有commit()之前,在别的地方还能对这个table进行修改操作吗?

5 个解决方案

#1


没有commit 之前,无法修改,需要等待提交后,才能修改. 

#2


引用 楼主 qq_15159897 的回复:
某一个table在事物里做新增操作,这个事务没有commit()之前,在别的地方还能对这个table进行修改操作吗?


补充一下,需要看你的隔离级别设的是哪种.
参考  https://msdn.microsoft.com/zh-cn/library/ms172001(v=sql.100).aspx

#3


不能操作,甚至无法查询,但如果用聚集索引查询,还是有可以的。
插入时会有意向排它锁,和很多锁都冲突。可以看看锁兼容性:
锁兼容性(数据库引擎)

#4


在别的地方还能对这个table进行修改操作吗?
--> 不一定, 
当需修改的数据行所在的数据页被锁定时无法修改.
当需修改的数据行所在的数据页不被锁定时可以修改.

#5


引用 4楼唐诗三百首 的回复:
在别的地方还能对这个table进行修改操作吗?
--> 不一定, 
当需修改的数据行所在的数据页被锁定时无法修改.
当需修改的数据行所在的数据页不被锁定时可以修改.
也有可能锁在行上吧

#1


没有commit 之前,无法修改,需要等待提交后,才能修改. 

#2


引用 楼主 qq_15159897 的回复:
某一个table在事物里做新增操作,这个事务没有commit()之前,在别的地方还能对这个table进行修改操作吗?


补充一下,需要看你的隔离级别设的是哪种.
参考  https://msdn.microsoft.com/zh-cn/library/ms172001(v=sql.100).aspx

#3


不能操作,甚至无法查询,但如果用聚集索引查询,还是有可以的。
插入时会有意向排它锁,和很多锁都冲突。可以看看锁兼容性:
锁兼容性(数据库引擎)

#4


在别的地方还能对这个table进行修改操作吗?
--> 不一定, 
当需修改的数据行所在的数据页被锁定时无法修改.
当需修改的数据行所在的数据页不被锁定时可以修改.

#5


引用 4楼唐诗三百首 的回复:
在别的地方还能对这个table进行修改操作吗?
--> 不一定, 
当需修改的数据行所在的数据页被锁定时无法修改.
当需修改的数据行所在的数据页不被锁定时可以修改.
也有可能锁在行上吧