Ir al contenido principal

Fallas en las Sentencias DML.

Los comandos pueden fallar por muchas razones, incluyendo las siguientes:
·         Los errores de sintaxis
·         Las referencias a objetos o columnas inexistentes
·         Los permisos de acceso
·         violaciónes de restricción
·         problemas de espacio

Como un comando SQL puede afectar a un conjunto de filas, existe la complicación de que un comando puede tener éxito parcialmente: el fallo podría ocurrir sólo alguna línea en el conjunto. Las anteriores tres primeras clases de error también se aplican a las sentencias SELECT. Cuando se producen, que deben ser detectados por la herramienta que está construyendo el SQL para ser enviado a la base de datos: SQL * Plus o SQL Developer si se introduce el SQL interactivamente, o cualquier otra herramienta está siendo utilizada para generar una interfaz más sofisticada. Hay un gran número de posibles errores de sintaxis, empezando por simples errores de ortografía o errores de transposición.
Los errores de esta naturaleza no tendrán un impacto en la base de datos, ya que la base de datos nunca los verá. El SQL erróneo se detiene en la fuente. El grado de asistencia de la herramienta proporciona para la fijación de dichos errores dependerá del esfuerzo de los desarrolladores de la herramienta toman.
Una sentencia SQL puede ser sintácticamente correcto sino que se refieren a objetos que no existen. Los problemas más comunes son los errores de ortografía, pero hay cuestiones más complejas: una declaración podría hacer referencia a una columna que existió en un tiempo, pero se ha eliminado de la tabla o cambiado de nombre la tabla. Una declaración de esta naturaleza será enviado a la base de datos y fallará, antes la base de datos intenta su ejecución. Esto es peor para la base de datos que un simple error de sintaxis, pero la sentencia se detiene antes de que consuma todos los recursos importantes bases de datos.
Un error relacionado tiene que ver con la conversión de tipos. SQL es un lenguaje fuertemente tipado: columnas se definen como un tipo de datos determinado, y un intento de introducir un valor de un tipo de datos diferente fallará. Sin embargo, puede salirse con la suya porque la implementación de Oracle de SQL, en algunas circunstancias, hacer conversión de tipo automático. Algunas herramientas de terceros pueden ser más útiles que ofrece corrección automática de errores.
Si una sentencia es sintácticamente correcta y no tiene errores con los objetos a los que se refiere, todavía puede fallar debido a los permisos de acceso. Si el usuario intenta ejecutar la sentencia no tiene los permisos correspondientes en las tablas a las que se refiere la base de datos devolverá un error idéntico al que se devuelve si el objeto no existe. En lo que se refiere al usuario, que no existe.

Los errores causados ​​por permisos de acceso son un caso en el que las sentencias SELECT y DML pueden devolver resultados diferentes: es posible que un usuario tiene permiso para ver las filas de una tabla, pero no insertar, actualizar o borrar. Esta disposición no es raro, a veces tiene sentido para los negocios. Tal vez más confusa, los permisos se pueden configurar de tal manera que es posible insertar filas que no se les permite ver. Y, tal vez lo peor de todo, es posible eliminar las filas que se puede ver ni actualizar. Sin embargo, estas disposiciones no son comunes.
Una restricción es una regla de negocio, implementado dentro de la base de datos. Limitaciones típicas son que una tabla debe tener una clave principal: un valor de una columna ( o combinación de columnas ) que puede identificar de forma única cada fila. Un comando INSERT puede insertar varias filas en una tabla, y para cada fila de la base de datos comprobará si una fila que ya existe con la misma clave principal . Esto ocurre cuando se inserta cada fila. Podría ser que las primeras filas (o los primeros millones de filas) entran sin ningún problema, y luego la declaración golpea una fila con un valor duplicado . En este punto se devolverá un error , y la declaración se producirá un error . Este fracaso dará lugar a una reversión de todas las inserciones que ya habían tenido éxito . Esto es parte del estándar SQL: una declaración debe superar en total, o nada en absoluto . La inversión de la obra es una reversión. Los mecanismos de la reversión se describen en la sección de este capítulo titulada "Control de Operaciones . "

Si una declaración falla debido a problemas de espacio , el efecto es similar . A parte de la declaración pudo haber tenido éxito antes de la base de datos quedó sin espacio . La parte que tuvo éxito se pondrá en marcha automáticamente . Rollback de una declaración es un asunto serio. Obliga a la base de datos para hacer un montón de trabajo extra y por lo general se llevará por lo menos , siempre y cuando el estado ha tomado ya (a veces mucho más) .

Comentarios