Secuencia INSERT

Utilice la secuencia INSERT para crear registros en una tabla de base de datos. Puede especificar:

  • Una lista de valores para insertar como nuevo registro

  • Una secuencia SELECT que copia datos de otra tabla para insertarlos como conjunto de registros nuevos.

El formato de la secuencia INSERT es:

Copiar
INSERT INTO nombre_tabla [(nombre_columna, ...)] VALUES (expr, ...)

nombre_columna es una lista opcional de nombres de columnas que proporciona el nombre y el orden de las columnas cuyos valores se han especificado en la cláusula VALUES. Si omite nombre_columna, las expresiones de valor (expr) deben proporcionar valores para todas las columnas definidas en la tabla y deben encontrarse en el mismo orden en que se definen las columnas para la tabla. nombre_columna también puede especificar una repetición de campo, por ejemplo, lastDates[4].

expr es la lista de expresiones que proporcionan los valores para las columnas del nuevo registro. Normalmente, las expresiones son valores constantes para las columnas (pero también pueden ser subconsultas). Debe escribir los valores de las cadenas de caracteres entre comillas sencillas ('). Para incluir un signo de comillas sencillas en un valor de cadena de caracteres escrito entre comillas sencillas, utilice un signo de comillas dobles (por ejemplo,'O''Neal').

Las subconsultas deben escribirse entre paréntesis.

Ejemplo

Inserte una lista de expresiones.

Copiar
INSERT INTO emp (apellidos, nombre, id_emp, salario, fecha_contratación)
   VALUES ('Smith', 'John', 'E22345', 27500, DATE '05/06/2028')

Cada secuencia INSERT añade un registro a la tabla de la base de datos. En este caso, se ha añadido un registro a la tabla de base de datos de empleados, emp. Se han especificado valores para cinco columnas. A las demás columnas de la tabla se les asigna un valor en blanco, que significa Nulo.

Importante  

En los campos contenedores, puede insertar solo texto (INSERT) a menos que cree una secuencia con parámetros y envíe los datos desde su aplicación. Para usar datos binarios, puede asignar simplemente el nombre de archivo escribiéndolo entre comillas simples o utilizar la función PutAs(). A la hora de especificar el nombre de archivo, el tipo de archivo se deduce de la extensión del mismo:

Copiar
INSERT INTO nombre_tabla (nombre_contenedor) VALUES(? AS 'nombrearchivo.extensión archivo')

Los tipos de archivo que no se admitan se insertarán como FILE.

A la hora de utilizar la función PutAs(), especifique el tipo: PutAs(col, 'tipo'), donde el valor tipo es un tipo de archivo admitido tal y como se describe en Recuperación del contenido de un campo contenedor: Función CAST() y función GetAs().

La secuencia SELECT es una consulta que devuelve valores para cada valor de nombre_columna especificado en la lista de nombres de columnas. El uso de una secuencia SELECT en lugar de una lista de expresiones de valores le permite seleccionar un conjunto de filas de una tabla e insertarlo en otra tabla utilizando una única secuencia INSERT.

Ejemplo

Realice la inserción mediante la secuencia SELECT.

Copiar
INSERT INTO emp1 (nombre, apellidos, id_emp, dept, salario)
   SELECT nombre, apellidos, id_emp, dept, salario from emp
   WHERE dept = 'D050'

En este tipo de secuencia INSERT, el número de columnas para insertar debe coincidir con el número de columnas de la secuencia SELECT. La lista de columnas que se van a insertar debe corresponder con las columnas de la secuencia SELECT del mismo modo que lo haría con una lista de expresiones de valores en el otro tipo de secuencia INSERT. Por ejemplo, la primera columna insertada corresponde con la primera columna seleccionada; la segunda insertada con la segunda seleccionada, etc.

El tamaño y el tipo de datos de estas columnas correspondientes deben ser compatibles. Cada columna de la lista SELECT debe tener un tipo de datos que acepte el controlador de cliente ODBC o JDBC en una secuencia INSERT/UPDATE normal de la columna correspondiente de la lista INSERT. Si el tamaño del valor de la columna de lista SELECT es mayor que el de la columna de lista INSERT correspondiente, los valores se truncan.

La secuencia SELECT se evalúa antes de que se inserten los valores.