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

[SOLUCIONADO] No insertar registros repetidos

Estas en el tema de No insertar registros repetidos en el foro de Mysql en Foros del Web. Buenos dias.. Quisiera saber si tengo una tabla como esta +----+------------+ | N |Nombre | +----+------------+ | 2 | manzana | +----+------------+ | 4 | ...
  #1 (permalink)  
Antiguo 17/09/2013, 10:20
 
Fecha de Ingreso: agosto-2013
Mensajes: 99
Antigüedad: 10 años, 8 meses
Puntos: 3
No insertar registros repetidos

Buenos dias..

Quisiera saber si tengo una tabla como esta

+----+------------+
| N |Nombre |
+----+------------+
| 2 | manzana |
+----+------------+
| 4 | pera |
+----+------------+

Entonces si por ejemplo si inserto con la sentencia

Código PHP:
INSERT INTO datos
VALUES
('4','manzana'
No se me cree un nuevo registro es decir que no me quede asi

+----+------------+
| N |Nombre |
+----+------------+
| 2 | manzana |
+----+------------+
| 4 | pera |
+----+------------+
| 4 | manzana |
+----+------------+

Si no que aumennte el N ya que ese dato existe en la base de datos asi:

+----+------------+
| N |Nombre |
+----+------------+
| 6 | manzana | // notese que solo cambio el N pero no se creo un nuevo registro
+----+------------+ por que ya existia
| 4 | pera |
+----+------------+
  #2 (permalink)  
Antiguo 17/09/2013, 10:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No insertar registros repetidos

La instrucción INSERT precisa exactamente eso, una inserción, no una actualización como estás pensando.

Para obtener dicho resultado debes hacer un proceso lógico: buscas en la BD por algún registro con los mismos detalles usando SELECT, si no existe entonces haces el INSERT, si ya existe haces un UPDATE con sus respectivos cálculos.

¿Se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/09/2013, 11:00
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: No insertar registros repetidos

Podrias usar la clausura ON DUPLICATE KEY.

Ejemplo:
Código SQL:
Ver original
  1. INSERT INTO TABLE (a,b,c) VALUES (1,2,3)
  2.   ON DUPLICATE KEY UPDATE c=3;
http://dev.mysql.com/doc/refman/5.0/...duplicate.html
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #4 (permalink)  
Antiguo 17/09/2013, 14:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No insertar registros repetidos

Cita:
Iniciado por lilmaster Ver Mensaje
Buenos dias..

Quisiera saber si tengo una tabla como esta

+----+------------+
| N |Nombre |
+----+------------+
| 2 | manzana |
+----+------------+
| 4 | pera |
+----+------------+

Entonces si por ejemplo si inserto con la sentencia

Código PHP:
INSERT INTO datos
VALUES
('4','manzana'
No se me cree un nuevo registro es decir que no me quede asi

+----+------------+
| N |Nombre |
+----+------------+
| 2 | manzana |
+----+------------+
| 4 | pera |
+----+------------+
| 4 | manzana |
+----+------------+

Si no que aumennte el N ya que ese dato existe en la base de datos asi:

+----+------------+
| N |Nombre |
+----+------------+
| 6 | manzana | // notese que solo cambio el N pero no se creo un nuevo registro
+----+------------+ por que ya existia
| 4 | pera |
+----+------------+
Además de lo ya dicho, en referencia al UPDATE, es evidente que en esa tabla no tienes declarada una PK, por cuanto si la columna "N" fuese la clave primaria, no podrías insertar un nuevo "4" en esa tabla por restricciones de PK en la base.
¿Se entiende?

Te recomiendo leer lo básico al menos de Bases de Datos y de SQL, sin perder la perspectiva que ninguna de las dos cosas tiene que ver con PHP. Son temas independientes del lenguaje de programación.
__________________
¿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 19/09/2013, 06:47
 
Fecha de Ingreso: agosto-2013
Mensajes: 99
Antigüedad: 10 años, 8 meses
Puntos: 3
Respuesta: No insertar registros repetidos

Si gracias gnzsoloyo yo se lo basico , lo que necesitaba era la respuesta de h2swider
  #6 (permalink)  
Antiguo 19/09/2013, 07:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No insertar registros repetidos

Cita:
Iniciado por lilmaster Ver Mensaje
Si gracias gnzsoloyo yo se lo basico , lo que necesitaba era la respuesta de h2swider
Se nota que sabes lo básico, preguntando por asuntos de SQL en el foro de PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: php, registro, registros, repetidos, tabla
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 12:12.