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.
📌 Estructura
Section titled “📌 Estructura”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.
🔹 Ejemplo básico
Section titled “🔹 Ejemplo básico”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_PRODUCTOFROM DETALLE_PEDIDO🔹 Inserción de valores por defecto
Section titled “🔹 Inserción de valores por defecto”Si la tabla define valores por defecto, podemos forzar su uso.
En caso contrario, se insertarán NULL.
INSERT INTO PRECIOS DEFAULT VALUES🔹 @@IDENTITY
Section titled “🔹 @@IDENTITY”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 @CodigoDECLARE @Codigo int
INSERT INTO Articulos (nom, descripcion, precio)VALUES ('Palomitera', 'Para hacer palomitas', 68.96)
SET @Codigo = SCOPE_IDENTITY()
PRINT @Codigo🔹 Cláusula OUTPUT
Section titled “🔹 Cláusula OUTPUT”Permite recuperar los valores insertados, modificados o eliminados mediante las pseudo-tablas INSERTED y DELETED.
🔸 DELETED
Section titled “🔸 DELETED”- Refleja los valores antes de un UPDATE o DELETE.
- No puede usarse con OUTPUT en un
INSERT.
🔸 INSERTED
Section titled “🔸 INSERTED”- Refleja los valores después de un INSERT o UPDATE (pero antes de triggers).
- No puede usarse con OUTPUT en un
DELETE.
🔹 Ejemplo con OUTPUT
Section titled “🔹 Ejemplo con OUTPUT”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_INSERTADASVALUES ('Carretilla','cosa pa mover otras cosas', 1.56)
SELECT * FROM @FILAS_INSERTADAS