Realizo 2 consultas en una transacción: SELECCIONAR (que contiene la cláusula JOIN) y ACTUALIZAR. Se requiere que los datos en las filas seleccionadas no cambien antes de que se realice la actualización, entonces estoy usando la cláusula FOR UPDATE. Mi pregunta es: ¿el 'para actualizar' funciona solo para una parte de los datos seleccionados de la tabla especificada en la cláusula FROM o para los datos de las tablas unidas también? Mi DBMS es MySql.¿Funciona el bloqueo de filas 'para actualizar' también para tablas unidas?
9
A
Respuesta
6
El documentation simplemente dice que el bloqueo está en las filas leídas sin excepción, por lo que debe estar en todos los registros en todas las tablas unidas. Si desea bloquear solo las filas en una de las tablas, puede hacerlo por separado: 'SELECCIONAR 1 FROM tabla de claves DONDE ... PARA ACTUALIZAR'.
Dicho esto, esto no es necesario simplemente para evitar una actualización entre SELECT y UPDATE. El bloqueo de lectura en SELECT ya hace esto. El propósito de FOR UPDATE sería evitar que otra transacción lea las filas y, por lo tanto, causar un punto muerto porque la ACTUALIZACIÓN no se puede aplicar hasta que la otra transacción libere su bloqueo de lectura.
Cuestiones relacionadas
- 1. ClientDataset.RefreshRecord ya no funciona en Delphi XE para tablas unidas, ¿alguna solución alternativa?
- 2. MySQL InnoDB bloquea en las filas unidas
- 3. "SELECCIONAR ... PARA ACTUALIZAR" no funciona para Hibernate y MySQL
- 4. UNIDAS vs SELECCIONAR de muchas tablas
- 5. Tiene el bloque "seleccionar para actualizar" en filas no existentes
- 6. Bloqueo de tablas en Entity Framework
- 7. Bloqueo de Oracle con SELECCIONAR ... PARA ACTUALIZAR DE
- 8. Cómo usar "como" para establecer un alias para tablas unidas en oráculo 10
- 9. actualizar una columna para todas las filas
- 10. ¿Por qué el bloqueo a nivel de tabla es mejor que el bloqueo a nivel de fila para tablas grandes?
- 11. Bloquear filas en una tabla para SELECCIONAR y ACTUALIZAR
- 12. Jquery Ocultar filas de tablas
- 13. Cómo especificar condiciones en tablas unidas en rieles
- 14. ¿Cómo funciona el bloqueo RescueTimes?
- 15. Rieles con múltiples retardos_trabajos: tablas de bloqueo
- 16. Django Models y SELECT con dos o más tablas unidas?
- 17. Ejecutar script SQL para crear tablas y filas
- 18. eliminar filas de varias tablas
- 19. JPA: ¿Cómo funciona el bloqueo de lectura?
- 20. MySQL: Transacciones vs Tablas de bloqueo
- 21. Actualizar varias filas utilizando instrucción de selección
- 22. Revertir transacciones con TABLAS DE BLOQUEO
- 23. Actualizar filas de otra tabla
- 24. Android - Activación del sistema de bloqueo de teclas (también conocido como bloqueo de pantalla)
- 25. ¿cómo puedo actualizar las filas al azar?
- 26. pthreads: bloqueos de lector/escritor, actualización del bloqueo de lectura para escribir el bloqueo
- 27. actualizar filas en SSIS OLEDB Destino
- 28. Disparador para insertar, actualizar, eliminar
- 29. Ejecutar MySQLDump sin tablas de bloqueo
- 30. cómo crear un DAO para unir tablas?
"Dicho esto, esto no es necesario simplemente para evitar una actualización entre SELECT y UPDATE. El bloqueo de lectura en SELECT ya lo hace" No creo que sea cierto. Eso solo es cierto si lo haces SELECCIONAR ... BLOQUEO EN MODO COMPARTIR –