RDBMS - 锁定表以防止插入

时间:2013-05-06 18:15:07

标签: mysql postgresql

我希望能够锁定一个表以防止其他用户进行插入操作。我不想锁定整个表,因为这会阻止其他用户更新行。我确实有另一个相当优雅的解决方案,但如果我可以单独锁定表以防止其他用户插入行,那将是一个更好的解决方案。 IE浏览器。尝试INSERT之前的任何用户都会尝试获取此锁,并等待已经在使用中。

1 个答案:

答案 0 :(得分: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;

See Postgres' doc on LOCK

不幸的是,您将不得不更改任何使用锁定进行插入的代码。另一种选择是使用某种Message Queue,我已经做了很多次并取得了巨大的成功。