Ejemplo de eliminación de registros
A continuación un ejemplo del proceso
completo de eliminación de registros con OpenOffice Base. Eso sí,
aplicaremos el principio de prudencia, es decir, crearemos en primer
lugar una consulta de selección estándar y la convertiremos después
en una consulta de eliminación. De esta forma podemos comprobar si
los registros que serán eliminados corresponden exactamente con los
que deseamos borrar de la base de datos. La idea es eliminar los
alumnos cuya fecha de nacimiento sea inferior a 31/12/1990. El
resultado lo debes ordenar alfabéticamente. Empecemos por diseñar
la consulta.
Actividad 11
- Selecciona la opción Crear consulta en vista SQL y empieza escribiendo: SELECT.
- A continuación indica los campos de la tabla que deseas mostrar en la consulta. En este caso, utilizarás los campos Nombre y Apellidos y FechaNacimiento de la tabla Alumnos.
- Ahora añade la cláusula FROM y escribe el nombre de la única tabla implicada: Alumnos
- Ahora añade la sentencia WHERE y escribe el primer criterio de filtrado: FechaNacimiento <= '1990-12-31'
- Finalmente para ordenar el resultado, añade: ORDER BY Apellidos
- La instrucción SQL queda del siguiente modo: SELECT Nombre, Apellidos, FechaNacimiento FROM Alumnos WHERE FechaNacimiento <= '1990-12-31' ORDER BY Apellidos
Observa el aspecto de la ventana diseño en la figura 6.21.
Figura 6.21
- Ejecuta la consulta y comprueba que los resultados mostrados corresponden realmente con la información que deseas eliminar de la base de datos. Insistimos en que este paso previo es muy importante para estar completamente seguro que eliminaremos los registros correctos.
- Una vez que estés completamente seguro de que la selección es correcta, un pequeño truco para ahorrar algo de trabajo: Selecciona la instrucción SQL completa y después utiliza el comando Copiar, ya sea con la combinación de teclas Control+C o desde el menú Editar.
- Cierra la ventana de consulta, guarda el resultado si lo crees conveniente y vuelve a la ventana principal de la base de datos.
- En el menú Herramientas selecciona el comando SQL como muestra la figura 6.22.
Figura 6.22
- Haz clic dentro de la primera sección del cuadro de diálogo y ejecuta el comando Pegar (Control+V). Al instante aparece la instrucción de selección.
- Pero si lo que deseas es eliminar registros y no seleccionarlos, debes hacer algunos cambios. Concretamente debes eliminar el comando SELECT y cambiarlo por DELETE. Además elimina los nombres de campos y la cláusula ORDER BY. Una vez hechos todos estos cambios la sentencia quedaría de la siguiente forma: DELETE FROM "Alumnos" WHERE ("FechaNacimiento" <= '1990-12-31')
- Si has seguido todos los pasos correctamente, el resultado de ejecutar la sentencia anterior será un error. Bueno, en realidad no se trata de un error, sino más bien de un sistema de protección de la base de datos. Las reglas de integridad referencial de la base de datos no te dejan llevar a cabo este proceso para no dejar registros "colgados".
- Para solucionarlo abre la ventana de relaciones y haz clic con el botón derecho sobre la línea que une la tabla Alumnos con todas aquellas tablas donde se han utilizado datos de esta tabla.
- Selecciona el comando Editar para que Base muestre el cuadro de diálogo Relaciones. En la parte inferior derecha tienes la sección Opciones de eliminación. Pues bien, aquí puedes controlar comportamientos del programa cuando se intenta eliminar un registro que tiene vínculos en otras tablas. Si seleccionas la opción Eliminar en cascada ya no tendría que aparecer el error y el alumno desaparecerá de todas aquellas tablas donde se encontraba.
- Finalmente, en la parte inferior del cuadro de diálogo Ejecutar comandos SQL debe aparecer un mensaje indicando que todo ha sido correcto como puedes ver en la figura 6.23.
Figura 6.23
Truco
Si quieres conocer la sentencia SQL asociada a cualquier consulta mientras trabajas en la vista Diseño, ejecuta el comando Ver y después selecciona Activar o desactivar la vista Diseño como puedes comprobar en la figura 6.24. Para recuperar el aspecto inicial de la ventana, repite la misma operación.
Figura 6.24