En SQL en general y en Firebird en particular podemos usar scripts.

¿Qué es un script?

Es un programa, o sea un conjunto de comandos, que se le da a un motor SQL para decirle lo que debe hacer y en que orden debe hacerlo.

¿Cómo se escribe un script?

Como un archivo de texto plano, o sea sin negritas, ni subrayados, nada de eso. Por ejemplo, puedes usar el Bloc de Notas para escribirlo. Por convención, la extensión de los archivos de script es .SQL pero puedes usar cualquier extensión que quieras o inclusive no usar extensión, es lo mismo. Sin embargo, para que te sea fácil entenderte con las demás personas es recomendable que uses la extensión .SQL

¿Qué se puede escribir en un archivo de script?

Cualquier comando que puedes escribir en tu motor SQL, por ejemplo puedes crear bases de datos, crear dominios, crear tablas, crear Primary Keys, crear índices, crear stored procedures, crear triggers, insertar filas, borrar filas, actualizar filas, etc.

También puedes escribir el comando COMMIT.

Aunque puedes tenerlos en un solo script, para evitarte problemas de integridad de los datos lo aconsejable es que escribas scripts separados para los comandos DDL (los que crean y modifican los objetos de la Base de Datos: CREATE, ALTER, DROP) y los comandos DML (los que manipulan a esos objetos: INSERT, UPDATE, DELETE, EXECUTE PROCEDURE, etc.)

Lo recomendable es que uses varios scripts, cada uno de ellos especializado en una tarea.

¿Para qué sirven los scripts?

  1. Para tener documentados los cambios que se realizaron a la Base de Datos. Cada vez que se realiza un cambio se puede escribir un comentario que nos indique la fecha, el autor y el motivo del cambio
  2. Para copiar bases de datos (en forma total o parcial) de una computadora a otra computadora
  3. Para poder mirar como está compuesta una Base de Datos y si está todo bien o si hay algún error
  4. Para tener un backup de la Base de Datos (puede ser total, aunque generalmente sólo de los metadatos). Esto nos permitirá recuperarla si hay algún problema.

Si documentamos los cambios a la Base de Datos, especificando claramente la fecha, el autor, y el motivo del cambio más adelante nos será muy fácil entender qué se hizo y por qué se hizo.

Si la creación de los metadatos sigue un orden específico, encontrar los errores será muy fácil y además nos aseguraremos que los objetos existirán más adelante, cuando objetos dependientes se refieran a ellos.

¿Cómo se escriben los comentarios en un script?

Con la pareja /*    (mi comentario)    */

Por ejemplo: /* esto es un comentario en el script */

O con dos guiones seguidos: — (mi comentario)

Por ejemplo: — este es otro comentario en el script

¿Cuál es el orden que se debe seguir para crear scripts?

Como vimos anteriormente, lo mejor es que tengas varios scripts, no uno solo para realizar todas las tareas sino que cada tarea debería tener su propio script. Por ejemplo:

  • MiBase01.SQL para CREATE DATABASE
  • MiBase02.SQL para CREATE DOMAIN
  • MiBase03.SQL para CREATE GENERATOR
  • MiBase04.SQL para CREATE EXCEPTION
  • MiBase05.SQL para CREATE TABLE, para agregar PRIMARY KEY y para agregar UNIQUE
  • MiBase06.SQL para FOREIGN KEY
  • MiBase07.SQL para CREATE INDEX
  • MiBase08.SQL para CREATE TRIGGER
  • MiBase09.SQL para CREATE PROCEDURE
  • MiBase10.SQL para INSERT en las tablas que tienen datos estáticos, como los nombres de los estados o de las provincias
  • MiBase11.SQL para GRANT derechos a los usuarios
  • MiBase12.SQL para los cambios realizados con posterioridad, todos documentados con la fecha, el autor, y el motivo del cambio
  • MiBase13.SQL para datos de prueba, con los cuales verificamos que la Base de Datos esté funcionando como se espera

En tu caso, en lugar de escribir «MiBase» escribirías el nombre de tu Base de Datos, por ejemplo: Conta01.SQL, Conta02.SQL o Sueldos01.SQL, Sueldos02.SQL, etc.

Listado 1. MiBase01.SQL

SET SQL DIALECT 3;

CREATE DATABASE 'E:\DATABASES\MiBase.fdb'
   PAGE_SIZE 4096
   DEFAULT CHARACTER SET ISO8859_1
   USER 'SYSDBA'
   PASSWORD 'masterkey' ;

COMMIT ;

Listado 2. MiBase02.SQL

CREATE DOMAIN D_BOOLEAN AS      -- T = verdadero, F = falso
   CHAR(1) CHARACTER SET NONE
   CHECK (VALUE = 'F' OR VALUE = 'T');

CREATE DOMAIN D_CANTIDAD1 AS
   SMALLINT;

CREATE DOMAIN D_CANTIDAD2 AS  -- El formato es: pppppppp.ssss
   NUMERIC(12, 4);            -- o sea 8 números en la parte entera y 4 decimales

COMMIT;

Listado 3. MiBase03.SQL

Aquí podemos verlo como fue creado con el Bloc de Notas.

SCRIPT2

Captura 1. Si haces clic en la imagen la verás más grande

Listado 4. Ejecutando un script desde ISQL

Para ejecutar un script desde el programa ISQL.EXE usamos el comando INPUT.

SCRIPT1

Captura 2. Si haces clic en la imagen la verás más grande

Ejemplo 5. Ejecutando un script desde EMS SQL Manager

SCRIPT3

Captura 3. Si haces clic en la imagen la verás más grande

Después de hacer click en la opción «SQL Script» se te mostrarán varias opciones relacionadas con los scripts.

SCRIPT4

Captura 4. Si haces clic en la imagen la verás más grande

Puedes usarlas para crear nuevos scripts, abrir un script que está grabado en el disco duro, grabar el script que estás escribiendo, ejecutar un script, etc. También tienes la posibilidad de crear un script a partir de cualquiera de los metadatos, por ejemplo para crear un script de la tabla BANCOS, buscas esa tabla, haces click sobre su nombre con el botón derecho, eliges la opción «Script to New SQL Editor» y luego la opción «Create» y verás el script correspondiente a crear esa tabla.

SCRIPT5

Captura 5. Si haces clic en la imagen la verás más grande

Lo que verás después de hacer click sobre la opción «Create» será algo similar a lo siguiente:

SCRIPT6

Captura 6. Si haces clic en la imagen la verás más grande

O sea que puedes ver la estructura de la tabla BANCOS, su Primary Key (si la tiene, claro), sus restricciones FOREIGN KEY (si las tiene, claro), sus restricciones UNIQUE (si las tiene, claro), sus índices, sus triggers.

De esta manera podrás saber como es la estructura de cada una de tus tablas. Como un archivo de script es un archivo de texto, lo recomendable es que escribas muchos comentarios en él, para que te ayude más adelante si necesitas reconstruir su contenido.

Conclusión:

Usar archivos de script es muy útil, es una facilidad que el Firebird nos otorga y que deberíamos usar para tener bien documentados los cambios a nuestra Base de Datos y poder reconstruirla eficientemente cuando sea necesario.

Artículos relacionados:

Usando un scrip para insertar datos fijos

Usando scripts para documentar la Base de Datos

El índice del blog Firebird21

El foro del blog Firebird21