Oracle – insertar registros desde otra tabla (insert into select)
¿Cómo insertar registros en Oracle de una tabla en otra? ¿Cómo copiar los datos de una tabla de Oracle a otra tabla? ¿Cómo hacer un insert into select? ¡La forma más sencilla es hacer un INSERT INTO, y en lugar de poner los VALUES de la sentencia, poner una SELECT con estructura de datos coincidentes.
Sintaxis:
INSERT INTO tabla-a-anyadir (SELECT campo1, campo2 FROM tabla-de-donde-coger) |
Por ejemplo, teniendo las tablas:
TABLA: usuarios
CAMPOS: id_usuario, nombre_usuario, apellido_usuario
Si quisiéramos añadir valores de la tabla:
TABLA: clientes
CAMPOS: id_cliente, nombre_cliente, apellido_cliente, id_pais
Imaginaos que queremos añadir a la tabla usuarios todos los clientes que sean del país 34 (España). Sintaxis:
INSERT INTO usuarios (SELECT id_cliente, nombre_cliente, apellido_cliente FROM clientes WHERE id_pais=34) |
Esta consulta es sólo un ejemplo, y podría haber problemas de violación de PK en el caso de que id_cliente a importar a Usuarios coincidieran con valores ya existentes en id_usuario. Siempre podéis dejar dicho campo vacío y valeros de un TRIGGER + SECUENCIA para que id_usuario aumentara automáticamente.