• Sábado 16 de Noviembre de 2024, 01:22

Autor Tema:  Problema con campo primario  (Leído 1755 veces)

th3r0rn

  • Miembro activo
  • **
  • Mensajes: 49
  • Nacionalidad: mx
    • Ver Perfil
    • http://imgeek.net
Problema con campo primario
« en: Martes 8 de Diciembre de 2009, 07:44 »
0
Hola, resulta que tengo una base de datos clientes donde tengo dos campos primarios, uno es el correo y otro el id, el problema es que he almacenado 3 veces el mismo correo en dicho campo y los a almacenado, cuando se supone esto no deberia de pasar:
Código: SQL
  1. mysql> DESCRIBE CLIENTES;
  2. +-----------+---------------+------+-----+---------+----------------+
  3. | FIELD     | TYPE          | NULL | KEY | DEFAULT | Extra          |
  4. +-----------+---------------+------+-----+---------+----------------+
  5. | id        | INT(11)       | NO   | PRI | NULL    | AUTO_INCREMENT |
  6. | nombre    | VARCHAR(45)   | NO   |     | NULL    |                |
  7. | apaterno  | VARCHAR(45)   | NO   |     | NULL    |                |
  8. | amaterno  | VARCHAR(45)   | NO   |     | NULL    |                |
  9. | edad      | INT(11)       | YES  |     | NULL    |                |
  10. | sexo      | enum('M','F') | YES  |     | NULL    |                |
  11. | correo    | VARCHAR(45)   | NO   | PRI | NULL    |                |
  12. | password  | VARCHAR(45)   | NO   |     | NULL    |                |
  13. | pais      | VARCHAR(45)   | NO   |     | NULL    |                |
  14. | estado    | VARCHAR(45)   | NO   |     | NULL    |                |
  15. | ciudad    | VARCHAR(45)   | NO   |     | NULL    |                |
  16. | calle     | VARCHAR(45)   | NO   |     | NULL    |                |
  17. | numero    | VARCHAR(45)   | NO   |     | NULL    |                |
  18. | cp        | INT(11)       | NO   |     | NULL    |                |
  19. | telefono  | INT(11)       | NO   |     | NULL    |                |
  20. | extension | INT(11)       | YES  |     | NULL    |                |
  21. +-----------+---------------+------+-----+---------+----------------+
  22. 16 ROWS IN SET (0.01 sec)
  23.  
  24. mysql> SELECT correo FROM CLIENTES;
  25. +--------------------------+
  26. | correo                   |
  27. +--------------------------+
  28. | luis.franco@gmail.com |
  29. | luis.franco@gmail.com |
  30. +--------------------------+
  31. 3 ROWS IN SET (0.00 sec)
  32.  
  33.  
Alguien podria decirme que esta pasando?  :wacko:
Gracias

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Problema con campo primario
« Respuesta #1 en: Martes 8 de Diciembre de 2009, 18:41 »
0
El problema es que estas usando 2 campos como clave primaria, id y correo, cuando haces eso, te toma los dos campos para generar la clave primaria, y el campo id es autonumerico, lo que significa que cada vez que insertas un registro, te genera un id numerico diferente, y al combinarlo con el correo, te genera 2 claves diferentes, y por lo tanto te deja hace la insercion.

Explicado con ejemplo:

id, correo
1, micorreo@micorreo.com
3, micorreo@micorreo.com
1, micorreo@micorreo.com

entonces si no te dejaria, ya que el conjunto de id + correo es el mismo.

Si lo que deseas es que al insertar un registro en la base de datos no te permita insertar el mismo correo dos veces, tienes que hacerlo manual, o sea, hacer un select (consulta) para buscar si existe el correo:

Código: SQL
  1.  
  2. SELECT correo FROM clientes WHERE correo = 'micorreo@micorreo.com';
  3.  
  4.  

Si la consulta te regresa cero filas, entonces el correo no existe y puedes insertarlo.

Si te regresa 1 fila, entonces el correo si existe, y mostrarias un mensaje de que no puedes hacer la insercion porque el correo ya existe.

Espero haberte ayudado.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

th3r0rn

  • Miembro activo
  • **
  • Mensajes: 49
  • Nacionalidad: mx
    • Ver Perfil
    • http://imgeek.net
Re: Problema con campo primario
« Respuesta #2 en: Martes 8 de Diciembre de 2009, 19:29 »
0
Que onda profesorX tu siempre ayudandome tan buena gente que eres :x je. Pues si definiticamente me puse a leer y observe q ese es mi problema pero si en este caso quiero conseravar ambos cmo clabe primaria, y no quisiera que se repitiera el mismo correo podria poner el campo como UNIQUE no?
Saludos =)