Skip to content

Sentencia INSERT

La sentencia INSERT se utiliza para insertar nuevas filas en una tabla existente.
Permite especificar valores manualmente para cada columna o bien seleccionarlos de otra tabla o vista.


INSERT INTO <nombre_tabla>
[(<campo1> [, <campo2>, ...])]
VALUES
(<valor1>, <valor2>, ...);
  • INSERT INTO: especifica la tabla y columnas donde se insertarán los datos.
  • VALUES: indica los valores que se insertarán en dichas columnas.

INSERT INTO Articulos (nom, descripcion, precio)
VALUES ('Palomitera', 'Para hacer palomitas', 68.96)

🔹 Inserción de múltiples filas (con SELECT)

Section titled “🔹 Inserción de múltiples filas (con SELECT)”

Con INSERT INTO ... SELECT se pueden insertar varias filas basadas en los resultados de otra consulta.

INSERT INTO PRECIOS (PRECIO, FX_INICIO, FX_FIN, CO_PRODUCTO)
SELECT PRECIO_UNIDAD, GETDATE(), GETDATE() + 30, CO_PRODUCTO
FROM DETALLE_PEDIDO

Si la tabla define valores por defecto, podemos forzar su uso.
En caso contrario, se insertarán NULL.

INSERT INTO PRECIOS DEFAULT VALUES

Devuelve el último valor de identidad insertado en la transacción.

DECLARE @Codigo int
INSERT INTO Articulos (nom, descripcion, precio)
VALUES ('Palomitera', 'Para hacer palomitas', 68.96)
SET @Codigo = @@IDENTITY
PRINT @Codigo
DECLARE @Codigo int
INSERT INTO Articulos (nom, descripcion, precio)
VALUES ('Palomitera', 'Para hacer palomitas', 68.96)
SET @Codigo = SCOPE_IDENTITY()
PRINT @Codigo

Permite recuperar los valores insertados, modificados o eliminados mediante las pseudo-tablas INSERTED y DELETED.

  • Refleja los valores antes de un UPDATE o DELETE.
  • No puede usarse con OUTPUT en un INSERT.
  • Refleja los valores después de un INSERT o UPDATE (pero antes de triggers).
  • No puede usarse con OUTPUT en un DELETE.

DECLARE @FILAS_INSERTADAS TABLE
(
cod_art int,
nombre varchar(50),
descripcion varchar(255),
precio decimal(10,2)
)
INSERT INTO Articulos (nom, descripcion, precio)
OUTPUT INSERTED.* INTO @FILAS_INSERTADAS
VALUES ('Carretilla','cosa pa mover otras cosas', 1.56)
SELECT * FROM @FILAS_INSERTADAS