Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server 2008 :SÉLECTIONNER POUR LA MISE À JOUR

Vous devez utiliser l'un des soi-disant indicateurs de table :

Le verrou de mise à jour empêche les autres processus de tenter de mettre à jour ou de supprimer les lignes en question - mais cela n'empêche pas l'accès en lecture :

    SELECT TOP (20) * 
    FROM [TMA_NOT_TO_ENTITY_QUEUE] WITH (UPDLOCK)
    WHERE [TMA_NOT_TO_ENTITY_QUEUE].[STATE_ID] = 2 
    ORDER BY TMA_NOT_TO_ENTITY_QUEUE.ID

Il y a aussi un cadenas exclusif , mais fondamentalement, le verrouillage de la mise à jour devrait suffire. Une fois que vous avez sélectionné vos lignes avec un verrou de mise à jour, ces lignes sont "protégées" contre les mises à jour et les écritures jusqu'à la fin de votre transaction.