我希望能够锁定一个表,以防止其他用户进行插入。我不想锁定整个表,因为这会阻止其他用户更新行。我确实有另一个相当优雅的解决方案,但是,如果我可以锁定该表以防止其他用户插入行,那将是一个更好的解决方案。即。任何用户在尝试插入之前都会尝试获取此锁,如果已在使用,则会等待。
发布于 2013-05-07 02:40:05
我不是很确定你为什么要这样做,但我相信你可以通过锁定一个虚拟的表来完成你正在做的事情。
也就是说,对于所有插入操作,您实际上不会锁定要插入的表,而是锁定仅用于锁定的不同表:
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;不幸的是,您将不得不去更改执行不加锁的插入的任何代码。另一种选择是使用某种类型的Message Queue,我已经做过很多次了,而且非常成功。
https://stackoverflow.com/questions/16404673
复制相似问题