我知道我可以使用锁定整个表LOCK TABLE
,但我只是好奇我是否可以通过使用语句获得相同的结果FOR UPDATE
,假设所有更新该表的事务在其事务开始时使用从该表中选择特定行(或者可能有一个名为的唯一列FOR UPDATE
的单独表,并在每个事务之前使用它来获取锁)?locks
lock_name
SELECT lock_name FROM locks WHERE lock_name = 'foo' FOR UPDATE
我之所以问这个问题,是因为我必须使用邻接表或闭包表将树数据结构保存在数据库表中。当多个用户尝试添加新节点或重新定位子树时,我必须选择一些行并进行一些计算,然后根据这些计算更新表,除非我锁定整个表,否则此操作是不可能的。