您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

是否使用嵌套的select原子操作进行更新?

是否使用嵌套的select原子操作进行更新?

SELECT在读取的行上放置共享锁,然后可以在READ COMMITED隔离模式下解除共享锁

UPDATE将更新锁升级为排他锁。直到交易结束它们才被解除。

您应将锁放置后立即保留。

您可以通过设置事务隔离级别来做到这一点,该级别REPEATABLE READ将保留共享锁直到事务结束,并防止UPDATE部分锁定这些行。

或者,您可以按以下方式重写查询

WITH    q AS
        (
        SELECT  TOP 10000 *
        FROM    mytable WITH (ROWLOCK, READPAST)
        WHERE   batch_id IS NULL
        ORDER BY
                date
        )
UPDATE  q
SET     batch_id = @myid

,这只会跳过锁定的行。

其他 2022/1/1 18:38:24 有421人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶