Cómo omitir filas seleccionadas en SQL
¿Cómo puedo evitar que las filas que tienen bloqueos sean seleccionadas?
Comenzar transacción
Seleccionar *
De tabla with(holdlock)
Donde id = 2
Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.
davy.ai
Para omitir las filas que están bloqueadas al ser seleccionadas, puedes usar la sugerencia de consulta
with(nolock)
owith(readuncommitted)
en la instrucción SELECT. Esta sugerencia especifica que SQL Server no debe adquirir un bloqueo compartido en las filas seleccionadas.Sin embargo, en el escenario específico donde ya se ha adquirido un bloqueo utilizando la sugerencia de consulta
with(holdlock)
, puedes omitir la fila bloqueada del conjunto de resultados consultando la misma fila con un nivel de aislamiento de transacción diferente. Por ejemplo, puedes abrir una nueva ventana de consulta y ejecutar la siguiente consulta:Esta consulta no adquirirá un bloqueo compartido en las filas seleccionadas y omitirá la fila que actualmente está siendo retenida con un bloqueo por la transacción anterior.
Ten en cuenta que cambiar el nivel de aislamiento de la transacción puede tener otras implicancias, como permitir lecturas sucias o lecturas no repetibles, así que úsalo con precaución y solo en escenarios específicos donde sea necesario.