以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  事务如何锁表不锁库  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172439)

--  作者:lgzhao
--  发布时间:2021/10/13 8:47:00
--  事务如何锁表不锁库
蓝老师好,

通过数据库事务执行出入库操作保证一致性。但是发现普通方法启动事务后会锁定整个数据库,期间其他人无法保存数据。
实际上这个入库事务仅仅只查询和写入一张表,其他的表应该可以释放。但默认的锁是阻止了整个数据库的写入。

不知道有没有办法,在数据库事务启动的时候,指定锁定特定的一个表?

谢谢

--  作者:有点蓝
--  发布时间:2021/10/13 9:13:00
--  
使用的什么数据库?正常情况下都是锁表不可能是锁库。

如果是access,应该是并发导致的问题。access并发数很少,比较流畅的就5个左右,如果使用的人多建议改为SqlServer

--  作者:lgzhao
--  发布时间:2021/10/13 9:17:00
--  
是sql server
实际上具体锁了什么我不是百分百确定。
但可以确定的是,当我执行事务的时候,事务内部仅仅反复操作一个表,但如果同时其他人也在保存的话,即使保存另外的表,系统也会弹出错误提示保存失败。
所以才有这个疑问。

--  作者:有点蓝
--  发布时间:2021/10/13 9:23:00
--  
保存另外的表是怎么保存的,datatables(xx).save这种?还是直接点击左上角的保存按钮?

如果是左上角的保存按钮是保存整个项目的表的,也许用户也改过事务内操作的表呢?

--  作者:有点蓝
--  发布时间:2021/10/13 9:35:00
--  
我使用2个项目测试了一下,在事务里对表A做更新操作,然后挂起来,不提交。另外一个项目无法操作表A,但是其它表都是正常可操作保存的
--  作者:lgzhao
--  发布时间:2021/10/13 11:08:00
--  
好的我再试试 谢谢