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

[SOLUCIONADO] Hacer Insert en tabla con índice unique que ya existe

Estas en el tema de Hacer Insert en tabla con índice unique que ya existe en el foro de Mysql en Foros del Web. Quisiera saber si al hacer un insert en MySQL con un campo unique que ya existe si "pasa algo" o simplemente lo omite. Es decir, ...
  #1 (permalink)  
Antiguo 12/03/2013, 05:51
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Hacer Insert en tabla con índice unique que ya existe

Quisiera saber si al hacer un insert en MySQL con un campo unique que ya existe si "pasa algo" o simplemente lo omite.

Es decir, es mejor hacer un insert de un bucle y que si ya existe se los salte o comprobar uno a uno si ya están en la bd?

Dicho de otra forma, es "malo" hacer inserts de datos con campos uniques repetidos dando por hecho que los va a omitir?

PHP no me devuelve ningún error y nada. Es que si tengo que hacer otra consulta para comprobar si ya existe el rendimiento cae mucho
  #2 (permalink)  
Antiguo 12/03/2013, 06:25
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: Hacer Insert en tabla con índice unique que ya existe

Un índice UNIQUE es una restricción absoluta. Significa que todos los valores allí son únicos en la tabla, y funciona como clave primaria alternativa.
De hecho, una PK es UNIQUE por definición, y la existencia de otro indice UNIQUE puede hacer suponer que la definición de la clave es discutible.
Una de las pocas diferencias es que un campo UNIQUE puede ser NULL, cosa que una PK no puede. Pero no recuerdo si lo puede ser una única vez o no.
Lo que seguro no puedes hacer es poner dos registros con el mismo valor en un campo declarado UNIQUE (o más de uno, si el indice es compuesto). Simplemente MySQL rechazará el insert por violación de clave única.
__________________
¿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 12/03/2013, 06:40
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Respuesta: Hacer Insert en tabla con índice unique que ya existe

Gracias gnz. Si, entendía la funcionalidad del Unique. Perdón me expliqué mal.

Quería decir que si pasa algo por hacer los INSERT aún sabiendo de que ya existen esos campos y que no me los va a insertar, es decir, que solo me funcionarán los insert cuando no exista en la BD. Porque así me ahorro otra consulta de comprobar si ya existe o no.

Es decir, el rechazar esos insert supone algo "grave" para MySQL o algún tipo de erro que yo no vea y que pueda afectar de alguna forma?
  #4 (permalink)  
Antiguo 12/03/2013, 06:45
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: Hacer Insert en tabla con índice unique que ya existe

Cita:
Es decir, el rechazar esos insert supone algo "grave" para MySQL o algún tipo de erro que yo no vea y que pueda afectar de alguna forma?
Creí que eso quedaba claro al decirte:
Cita:
Simplemente MySQL rechazará el insert por violación de clave única.
Es el mismo nivel de error que intentar hacer un INSERT con una PK que ya existe... Y eso, en cualquier DBMS, se considera un error gravísimo, porque atenta contra la integridad de clave única.
Es decir, es ese tipo de errores que se considera desastroso.
Siempre se debe validar todo dato que sea clave.
Siempre.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/03/2013, 10:32
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Respuesta: Hacer Insert en tabla con índice unique que ya existe

Gracias, queda claro.

Etiquetas: campo, campos, insert, php, sql, tabla, unique
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 22:14.