我正在使用qt为mysql数据库开发一个gui客户端。gui由几个以表单形式放置的“编辑器”组成,一个用于表x、y、z等的编辑器。如果我需要防止客户机用户“集体编辑”,我该如何做最简单的工作?我就是想不出一句话能让谷歌看到别人的解决方案。我所看到的(可能的解决办法)是 in_use 表,其中存储锁定的表名( in_use.table )以及锁定的行id( in_use.id ).每次打开编辑器时,都会插入一个“锁”,每次关闭时,都会删除一个锁。潜在的陷阱是什么?
in_use
in_use.table
in_use.id
t30tvxxf1#
如果要锁定表,可以使用lock table\u name read;您还可以使用get\u lock创建锁,检查它们是否是使用is free lock打开的,然后使用和释放\u lock释放它们。当编辑器打开时,您可以使用get\u lock或is free lock检查手动锁是否正在使用。编辑完成后,可以使用release\u lock释放下一个人访问编辑器的权限。陷阱:在应用程序端这样做会带来一些问题。如果用户关闭表单,您将如何告诉数据库释放这些锁?示例:我是您的用户,我转到您的站点/fat客户端,单击“编辑”开始我的工作,中途我的计算机崩溃并关闭。编辑:如果您有不同的用例并且不想锁定资源本身,那么您可以创建许多不同的锁。在这里,这里,这里看到更多
1条答案
按热度按时间t30tvxxf1#
如果要锁定表,可以使用lock table\u name read;
您还可以使用get\u lock创建锁,检查它们是否是使用is free lock打开的,然后使用和释放\u lock释放它们。
当编辑器打开时,您可以使用get\u lock或is free lock检查手动锁是否正在使用。编辑完成后,可以使用release\u lock释放下一个人访问编辑器的权限。
陷阱:在应用程序端这样做会带来一些问题。如果用户关闭表单,您将如何告诉数据库释放这些锁?示例:我是您的用户,我转到您的站点/fat客户端,单击“编辑”开始我的工作,中途我的计算机崩溃并关闭。
编辑:如果您有不同的用例并且不想锁定资源本身,那么您可以创建许多不同的锁。
在这里,这里,这里看到更多