Unidad 7. Actualización de datos (III)


7.5. Inserción de varias filas

Si los valores que queremos insertar los tenemos en otras tablas, podemos insertar varias filas a la vez indicando una consulta que genere las filas de valores a insertar. En este caso utilizamos la sintaxis:


INSERT [INTO]  <destino>  [(lista_columnas)] 

    tabla_derivada [;]

<destino> y lista_columnas funcionan igual que en el punto anterior.

Tabla_derivada es cualquier instrucción SELECT válida que devuelva filas con los datos que se van a cargar en el destino.
Cada fila devuelta por la SELECT es una lista de valores que se intentará insertar como con la cláusula VALUES, por lo que las columnas devueltas por la SELECT deberán cumplir las mismas reglas que los valores de la lista de valores anteriores.

Ejemplo:


CREATE TABLE trabajo (col1 INT, col2  VARCHAR(20), col3 MONEY); 

Creamos una tabla trabajo de 3 columnas


INSERT INTO trabajo SELECT oficina,  ciudad, ventas

                      FROM oficinas

                      WHERE  region = 'Centro';

Insertamos en trabajo el resultado de la SELECT (el número de oficina, ciudad y ventas de las oficinas del Centro).
En este caso no hemos incluido una lista de columnas, por lo que en la SELECT tenemos que generar los valores en el mismo orden que en trabajo.

Si hubiesemos escrito:


INSERT INTO trabajo SELECT ciudad,  oficina, ventas

                       FROM oficinas

                       WHERE  region = 'Centro';

Hubiese dado error porque la columna col1 es INT y el valor a asignar es texto (el nombre de la ciudad de la oficina).


INSERT INTO trabajo (col2, col1) 

  SELECT ciudad,  oficina

  FROM oficinas

  WHERE region = 'Este';

En este caso hemos incluido una lista de columnas, la SELECT debe generar los valores correspondientes, y col3 que no se rellena explícitamente se rellenará con NULL porque la columna col3 no está definida como columna calculada, ni con DEFAULT, ni IDENTITY y además admite nulos.

Para practicar puedes realizar este Ejercicio Insertar varias filas.

7.6. Insertar una fila de valores por defecto

TRANSACT-SQL nos permite insertar una fila de valores por defecto utilizando la sintaxis:


INSERT [INTO] <destino> DEFAULT VALUES 

   [;]

Hace que la nueva fila contenga los valores predeterminados definidos para cada columna.
Hay que tener en cuenta una serie de aspectos al utilizar esta instrucción:
Puede generar filas duplicadas en la tabla si los valores que se generan son siempre los mismos.
Si la tabla tiene una clave principal, esta tendrá que estar basada en una columna con la propiedad IDENTITY para que se generen valores diferentes automáticamente.
Si una columna está definida como NOT NULL tendrá que incluir un DEFAULT o ser una columna calculada con una expresión compatible.

Febrero-2010
Pág. 7.3

Atrás  Inicio  Adelante






.