简单的只读锁定机制

aij0ehis  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(290)

我正在使用qt为mysql数据库开发一个gui客户端。
gui由几个以表单形式放置的“编辑器”组成,一个用于表x、y、z等的编辑器。如果我需要防止客户机用户“集体编辑”,我该如何做最简单的工作?我就是想不出一句话能让谷歌看到别人的解决方案。
我所看到的(可能的解决办法)是 in_use 表,其中存储锁定的表名( in_use.table )以及锁定的行id( in_use.id ).
每次打开编辑器时,都会插入一个“锁”,每次关闭时,都会删除一个锁。
潜在的陷阱是什么?

t30tvxxf

t30tvxxf1#

如果要锁定表,可以使用lock table\u name read;
您还可以使用get\u lock创建锁,检查它们是否是使用is free lock打开的,然后使用和释放\u lock释放它们。
当编辑器打开时,您可以使用get\u lock或is free lock检查手动锁是否正在使用。编辑完成后,可以使用release\u lock释放下一个人访问编辑器的权限。
陷阱:在应用程序端这样做会带来一些问题。如果用户关闭表单,您将如何告诉数据库释放这些锁?示例:我是您的用户,我转到您的站点/fat客户端,单击“编辑”开始我的工作,中途我的计算机崩溃并关闭。
编辑:如果您有不同的用例并且不想锁定资源本身,那么您可以创建许多不同的锁。
在这里,这里,这里看到更多

相关问题