sql >> Base de Datos >  >> RDS >> Oracle

¿Bloqueo de tabla exclusivo (lectura) en Oracle 10g?

Si solo desea evitar que cualquier otra sesión modifique los datos, puede emitir

LOCK TABLE whatever
/

Esto impide que otras sesiones actualicen los datos, pero no podemos impedir que otras personas los lean.

Tenga en cuenta que en Oracle este bloqueo de tablas rara vez se requiere, porque Oracle opera una política de consistencia de lectura. Lo que significa que si ejecutamos una consulta que tarda quince minutos en ejecutarse, la última fila devuelta será coherente con la primera fila; en otras palabras, si el conjunto de resultados se hubiera ordenado en orden inverso, seguiríamos viendo exactamente las mismas filas.

editar

Si desea implementar una cola (sin utilizar realmente función de cola avanzada integrada ) luego SELECT ... FOR UPDATE es el camino a seguir. Esta construcción permite que una sesión seleccione y bloquee una o más filas. Otras sesiones pueden actualizar las filas desbloqueadas. Sin embargo, implementar una cola genuina es bastante engorroso, a menos que esté usando 11g. Solo en la última versión Oracle admitió SKIP LOCKED cláusula. Más información .