我希望能够锁定一个表以防止其他用户进行插入。我不想锁定整个表,因为这会阻止其他用户更新行。我确实有另一个相当优雅的解决方案,但是如果我可以锁定表以防止其他用户插入行,那将是一个更好的解决方案。IE。任何用户在尝试 INSERT 之前都会尝试获取此锁,如果已在使用中则等待。
问问题
332 次
1 回答
0
我不确定您为什么要这样做,但我相信您可以通过锁定虚拟桌子来完成您的工作。
对于所有插入,您实际上不会锁定在要插入的表上,而是锁定在仅用于锁定的不同表上:
BEGIN WORK;
LOCK TABLE insert_locks IN EXCLUSIVE;
INSERT INTO real_table VALUES
(_id_, 'GREAT! I was waiting for it for so long!');
COMMIT WORK;
不幸的是,您将不得不更改任何在没有锁定的情况下进行插入的代码。另一种选择是使用某种消息队列,我已经做了很多次并取得了巨大的成功。
于 2013-05-06T18:40:04.877 回答