Área de Tecnologías de la Información y las Comunicaciones Aplicadas
Área de Tecnologías de la Información y las Comunicaciones Aplicadas Universidad de Murcia
Área de Tecnologías de la Información y las Comunicaciones Aplicadas
ATICA arrow DESARROLLO arrow Problemas y Soluciones en Programación arrow Bloqueo de tabla detalle sin indice al borrar registro maestro
23.05.2012
 
 
Bloqueo de tabla detalle sin indice al borrar registro maestro Imprimir E-mail

Índices en Foreign keys

Todo se reduce a que, si NO hay índice en la tabla hija, al borrar el maestro o al modificar los campos de la pk del maestro, además del bloqueo de ROW-X en la fila del maestro, se produce un bloqueo Share en la TABLA hija, con lo que cualquier modificación / inserción / borrado en la hija se queda bloquedo hasta que termine el borrado o modificación de la maestra.

Si existe un índice normal en los campos de la foreign key de la tabla hija, oracle lo utiliza para comprobar si el registro borrado o modificado de la tabla maestra tiene hijos y ya no se produce el bloqueo Share en la tabla hija.

Si el índice sobre los campos de la foreign es bitmap, no funciona y sigue generándose el bloqueo Share en la tabla hija.

Si el índice es más completo, o mejor dicho, es más restrictivo que los campos que forman la foreign key también vale para que no haya Shared lock. Es decir, que si mi foreign key está formada por los campos (c01, c02) y ya tengo un índice por (c01, c02, c03) no hace falta que cree el índice para solo (c01, c02) ya que Oracle usará sin problemas el otro para evitar el Shared lock.

Última modificación ( 06.11.2009 )
 
Área de Tecnologías de la Información y las Comunicaciones Aplicadas
Volver al incio del documento Volver al inicio del documento
Área de Tecnologías de la Información y las Comunicaciones Aplicadas