Las siglas DDL significan: Data Definition Language o en castellano: Lenguaje para la Definición de Datos.

Entonces, al escribir el comando SET AUTODDL ON le estamos indicando al Firebird que queremos que realice un COMMIT automático a continuación de cada instrucción DDL.

¿Cuáles son las instrucciones DDL?

Todas las que empiezan con las palabras: CREATE, ALTER, DROP, DECLARE, RECREATE, SET

Sirven para crear tablas, índices, stored procedure, triggers, etc. También para realizar modificaciones, borrados, declaraciones.

Ejemplos: CREATE TABLE, CREATE INDEX, ALTER TABLE, DROP INDEX

¿Cuál es la ventaja de escribir SET AUTODDL ON?

Que no necesitaremos escribir un COMMIT a continuación de las instrucciones DDL

¿Dónde se usa SET DDL ON?

En el programa ISQL.EXE, en los scripts, y en algunos otros programas que implementan esta funcionalidad.

Ejemplo:

Queremos agregarle la tabla BANCOS a nuestra Base de Datos mediante un script:

/* Al poner AUTODDL en ON no necesitamos escribir los COMMIT */

SET AUTODDL ON;

/* Primero, creamos la tabla BANCOS, sin un COMMIT al final del CREATE */

CREATE TABLE BANCOS (
   BAN_IDENTI D_IDENTIFICADOR DEFAULT 0 NOT NULL,
   BAN_NOMBRE D_NOMBRE40 NOT NULL);

/* Después, creamos las restricciones Primary Key y Unique Key, sin COMMIT */

ALTER TABLE BANCOS ADD CONSTRAINT PK_BANCOS PRIMARY KEY (BAN_IDENTI);

ALTER TABLE BANCOS ADD CONSTRAINT UQ_BANCOS UNIQUE (BAN_NOMBRE);

/* A continuación creamos un trigger para tener un identificador que sea autoincremental */

SET TERM ^ ;

CREATE TRIGGER BI_BANCOS_BAN_IDENTI FOR BANCOS
   ACTIVE BEFORE INSERT
   POSITION 0
AS
BEGIN
   IF (NEW.BAN_IDENTI IS NULL OR NEW.BAN_IDENTI = 0) THEN
      NEW.BAN_IDENTI = GEN_ID(BANCOS_BAN_IDENTI_GEN, 1);
END^

SET TERM ; ^

Como puedes ver, ningún COMMIT ha sido escrito sin embargo la tabla BANCOS ha sido creada exitosamente, como también las dos restricciones y el trigger.

¿Por qué? Porque al estar AUTODDL en ON es el propio Firebird quien se encarga de poner el COMMIT luego de cada instrucción DDL.

Artículo relacionado:

El índice del blog Firebird21