Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Inserción múltiple condicional

Estas en el tema de Inserción múltiple condicional en el foro de Mysql en Foros del Web. Quien me dice que está mal aqui? Las consultas por separado funcionan...O es uqe en mysql no se pueden hacer inserciones múltiples condicionales? INSERT INTO ...
  #1 (permalink)  
Antiguo 08/04/2011, 11:49
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Inserción múltiple condicional

Quien me dice que está mal aqui? Las consultas por separado funcionan...O es uqe en mysql no se pueden hacer inserciones múltiples condicionales?
INSERT INTO tabla (col1,col2,Fecha)
VALUES ('8','1',NOW()),('4','1',NOW())
WHERE NOT EXISTS
(SELECT * FROM tabla
WHERE col1 IN ('8','4') AND
col2 = '1')
  #2 (permalink)  
Antiguo 08/04/2011, 11:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Inserción múltiple condicional

Si "col1" es PK, bien puedes hacer simplemente:
Código MySQL:
Ver original
  1. INSERT IGNORE INTO tabla (col1,col2,Fecha)
  2. VALUES ('8','1',NOW()),('4','1',NOW())

Nota: No te olvides que las inserciones condicionales no pertenecen al estándar ANSI-SQL, sino que son agregados implementados por diferentes DBMS. No necesariamente todos los DBMS tienen por qué tenerlos y ni siquiera tienen por qué escribirse de la misma forma...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/04/2011, 12:05
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Inserción múltiple condicional

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si "col1" es PK, bien puedes hacer simplemente:
Código MySQL:
Ver original
  1. INSERT IGNORE INTO tabla (col1,col2,Fecha)
  2. VALUES ('8','1',NOW()),('4','1',NOW())

Nota: No te olvides que las inserciones condicionales no pertenecen al estándar ANSI-SQL, sino que son agregados implementados por diferentes DBMS. No necesariamente todos los DBMS tienen por qué tenerlos y ni siquiera tienen por qué escribirse de la misma forma...
Pues en realidad col1 y col2 es la clave primaria...¿serviría igual no? Desconocía la clausula IGNORE.

EDITO: SI FUNCIONA CORRECTAMENTE. MUCHAS GRACIAS

Última edición por yerex_tf; 08/04/2011 a las 12:08 Razón: Comprobación de la solución planteada.
  #4 (permalink)  
Antiguo 08/04/2011, 12:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Inserción múltiple condicional

IGNORE lo que hace es no devolver un error si por alguna razón se produjo un error de inserción. Es una forma sencilla de hacer que si se hace una operación múltiple la misma no se cancele por un error intermedio.
En tu caso, el error que se produce es de clave duplicada. Cono no lo tiene que notificar, lo que hace MySQL es seguir con la siguiente operación, es decir, el siguiente insert.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: exist, insert, múltiple
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:13.