[SQL 2008] Insertar múltiples filas con valores (Nuevo).


Hola amigos, probablemente alguna vez tratamos de insertar múltiples filas en una tabla, y lo hacíamos repitiendo el comando INSERT (copiando y pegando) y solo cambiando el valor de las columnas. En SQL 2008 se puede hacer una múltiple inserción solo escribiendo una vez el INSERT <TABLE> y separando por comas los grupos de valores a insertar, les dejo el ejemplo, que en lo personal se me hace muy práctico e interesante.

1. Creamos una tabla “PRB_USUARIOS” .

CREATE TABLE dbo.PRB_USUARIOS
(Nombre VARCHAR(40),
 Apellidos VARCHAR(40))
GO

2. Insertamos múltiples filas (Observe la sintaxis).

--Insertando múltiples filas con valores.
INSERT dbo.PRB_USUARIOS
VALUES  ('Ivan','Rangel'),
        ('Cruz','Treviño'),
        ('Pepe','El toro'),
        ('María','Félix'),
        ('Mario','Cantinflas'),
        ('Pedro','Infante')

Observe que en el comando INSERT:

a. No aparece INTO, ya no es necesario en SQL 2008 (es opcional).

b. No se repite INSERT, solo se escribe una vez al igual que VALUES.

c. Por cada conjunto de valores a insertar tiene que separarlos por coma.

3. Ahora seleccionamos los datos insertados.

SELECT * FROM dbo.PRB_USUARIOS 

image

Me despido y espero les sea de ayuda, dejen comentarios.

Etiquetas de Technorati: ,,
    • LUis
    • 25/08/10

    Muy buena explicacion, y porque no se definen los campos en donde se insertaran los nuevos valores de estos, o ya no es necesario tampoco?

    • kelvin
    • 15/12/10

    excelente tu post me ayudo a completar mi tarea gracias

    • Albertronix
    • 16/06/11

    @LUis : Cuando no se definen los campos en el insert se asume que los valores se insertaran con el mismo orden con el que fueron expresados es decir:

    INSERT dbo.PRB_USUARIOS
    VALUES (‘Ivan’,’Rangel’),

    se podria asumir que es
    INSERT dbo.PRB_USUARIOS(‘nombre’,’apellido’)
    VALUES (‘Ivan’,’Rangel’);

    otro ejemplo es
    INSERT dbo.PRB_USUARIOS
    VALUES
    (‘Ivan’,’Rangel’,),
    (‘Luis’,’Garcia’,1);

    se podria asumir que es
    INSERT dbo.PRB_USUARIOS(‘nombre’,’apellido’,’PuntosGanados’)
    VALUES
    (‘Ivan’,’Rangel’,),
    (‘Luis’,’Garcia’,1);

    Espero me haya explicado …

  1. En sql 2008 R2, me da el siguiente error:

    Msg 102, Level 15, State 1, Line 2
    Incorrect syntax near ‘,’.

    No se a que se deba.

    • Richita
    • 24/11/11

    men y como lo hago para insertar fechas!!! de tipo datetime

    • psykrest
    • 25/11/11

    INSERT INTO TUTABLA(ID, CAMPOFECHA) VALUES(1,GETDATE())

    o

    INSERT INTO TUTABLA(ID, CAMPOFECHA) VALUES(1,’11/11/2011′)

    Saludos

    • psykrest
    • 25/11/11

    OK, primero verifica la sintaxis, si esa no esla solución entonces talvez es la compatibilidad de tu base de datos, checalo en las propiedades si esta en 90 significa que es de SQL Server 2005 y no acepta la inserción múltiple, si puedes cambiala a compatibilidad 100 de SQL Server 2008.

    Saludos…

    • dagmalu
    • 29/11/11

    hola me queda claro como hacerlo en 2008, pero en 2005 como seria?
    espero me puedan ayudar. gracia de antemano

    • Wladimir Silva
    • 5/01/12

    y si quiero insertar un registro en una tabla que contenga campos XML?? que debo hacer??

    • psykrest
    • 13/01/12

    INSERT INTO TUTABLA VALUES(85,’Lo que sea’, N’Lo que sea‘);

    o

    DECLARE @tuVariable XML;
    SET @tuVariable = N’Lo que sea‘;
    INSERT INTO TUTABLA VALUES(85,’Lo que sea’, @tuVariable);

    Saludos Ivan…

    • psykrest
    • 13/01/12

    Lo siento no de ve el código XML pero debería ir en el último campo o en la variable SQL, Saludos

  2. y como insertar varios registros donde un campo es un id que lo tomo de una tabla temporal y los demas datos son constantes?

    • lorenalorena
    • 21/05/12

    buenas tardes me pueden ayudar no he podido ingresar varias filas con la funcion insert, tengo windos 7 ultimate y office 2010, me aparece un error que falta el punto y como

    • Berenice
    • 28/06/12

    hola me marca un error me puedes ayudar por favor

    Msg 8152, Level 16, State 4, Line 1
    String or binary data would be truncated.
    The statement has been terminated.
    help

    • psykrest
    • 28/06/12

    Hola, checa las longitudes de las cadenas, alguna debe de estar excediendo el tamaño del campo.

    Saludos…

    • Roman Jesus Astorga Guzman
    • 13/11/12

    Excelente desde hace años Mysql cuenta con esta opción, no sabia que Microsoft lo había implementado

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: