values - Inserte valores mĂșltiples usando INSERT INTO(SQL Server 2005)
multiples insert sql (3)
En SQL Server 2005, estoy tratando de descubrir por qué no puedo insertar varios campos en una tabla. La siguiente consulta, que inserta un registro, funciona bien:
INSERT INTO [MyDB].[dbo].[MyTable]
([FieldID]
,[Description])
VALUES
(1000,N''test'')
Sin embargo, la siguiente consulta, que especifica más de un valor, falla:
INSERT INTO [MyDB].[dbo].[MyTable]
([FieldID]
,[Description])
VALUES
(1000,N''test''),(1001,N''test2'')
Recibo este mensaje:
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near '',''.
Cuando busqué la ayuda para INSERT en SQL Sever Management Studio, uno de sus ejemplos mostró el uso de la sintaxis "Valores" que utilicé (con grupos de valores entre paréntesis y separados por comas). La documentación de ayuda que encontré en SQL Server Management Studio parece que es para SQL Server 2008, por lo que quizás esa sea la razón por la que la inserción no funciona. De cualquier manera, no puedo entender por qué no va a funcionar.
En SQL Server 2008,2012,2014, puede insertar varias filas con una sola instrucción SQL INSERT.
INSERT INTO TableName ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )
De otra manera
INSERT INTO TableName (Column1, Column2 )
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2
La sintaxis que está utilizando es nueva en SQL Server 2008:
INSERT INTO [MyDB].[dbo].[MyTable]
([FieldID]
,[Description])
VALUES
(1000,N''test''),(1001,N''test2'')
Para SQL Server 2005, tendrá que usar múltiples INSERT
:
INSERT INTO [MyDB].[dbo].[MyTable]
([FieldID]
,[Description])
VALUES
(1000,N''test'')
INSERT INTO [MyDB].[dbo].[MyTable]
([FieldID]
,[Description])
VALUES
(1001,N''test2'')
Otra opción es usar UNION ALL
:
INSERT INTO [MyDB].[dbo].[MyTable]
([FieldID]
,[Description])
SELECT 1000, N''test'' UNION ALL
SELECT 1001, N''test2''
También puede usar la siguiente sintaxis:
INSERT INTO MyTable (FirstCol, SecondCol)
SELECT ''First'' ,1
UNION ALL
SELECT ''Second'' ,2
UNION ALL
SELECT ''Third'' ,3
UNION ALL
SELECT ''Fourth'' ,4
UNION ALL
SELECT ''Fifth'' ,5
GO
De here