Insertando filas en una tabla recién creada o modificada

Deja un comentario

¿Puedes crear una tabla e insertarle filas en una sola transacción? ¿Algo cómo esto?:

CREATE TABLE MiTabla (
   Columna1 INTEGER,
   Columna2 VARCHAR(40));

INSERT INTO MiTabla
   (Columna1, Columna2)
VALUES
   (1, 'Insertando una fila');

COMMIT;

Pues no, no puedes. ¿Por qué no? Porque estás creando la tabla e insertando la fila en una sola transacción (hay un solo COMMIT) y el Firebird necesita que la tabla esté creada y “comiteada” antes de insertarle datos. Por lo tanto a continuación de crear la tabla debes escribir un COMMIT. Lo mismo sucederá si la modificas, debes escribir un COMMIT después de alterarle la estructura y antes de insertarle, borrarle o modificarle datos. Esto es lo correcto:

CREATE TABLE MiTabla (
   Columna1 INTEGER,
   Columna2 VARCHAR(40));

COMMIT;

INSERT INTO MiTabla
   (Columna1, Columna2)
VALUES
   (1, 'Insertando una fila');

COMMIT;

Poniendo un COMMIT después de CREATE TABLE (o de ALTER TABLE) está todo ok.

 

Anuncios

¿Quién creó esta Base de Datos?

8 comentarios

Si necesitamos saber quien creó la Base de Datos que estamos usando podemos escribir:

SELECT DISTINCT
   RDB$OWNER_NAME AS NOMBRE_CREADOR_BASE_DATOS
FROM
   RDB$RELATIONS
WHERE
   RDB$SYSTEM_FLAG = 1