Foros del Web » Programando para Internet » PHP »

evitar id repetido en base de datos

Estas en el tema de evitar id repetido en base de datos en el foro de PHP en Foros del Web. Hola. Tengo una base de datos en MySql con una tabla de usuario. Aunque el id de los registros es un int autoincremental, he hecho ...
  #1 (permalink)  
Antiguo 31/01/2012, 12:45
 
Fecha de Ingreso: marzo-2008
Mensajes: 383
Antigüedad: 16 años, 9 meses
Puntos: 5
evitar id repetido en base de datos

Hola.

Tengo una base de datos en MySql con una tabla de usuario. Aunque el id de los registros es un int autoincremental, he hecho un campo "clave" donde se crea un id único para cada usuario:

Código PHP:
Ver original
  1. $clave = sha1(date("Y").date("n").date("j").date("G").date("i").date("s").rand(1,1000000));

Es poco probable que se repita el mismo valor estando codificado en sha1 pero me quiero poner en el peor de los casos.

Había pensado hacer una función recursiva. Cuando se genera el valor de la variable $clave, ejecuto una función que comprueba si ese valor esté ya usado en alguno de los registros de la tabla hasta que encuentre un valor que no esté ya almacenado.

Mi duda es, si llegara a tener una bbdd con 4 millones de usuarios o más, hacer esa comprobación retrasaría mucho la ejecución de la web? Merece la pena? Puedo estar completamente seguro de que en el 100% de los casos, no el 99.999999999999999999% de los casos, si no el 100%, nunca se va a repetir el valor de $clave ?
  #2 (permalink)  
Antiguo 31/01/2012, 12:49
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: evitar id repetido en base de datos

Hola cslbcn, estoy seguro que si configuras tu bd no se te va a repetir, pero me parece que este tema lo tendrias que consulta en bd.
Saludos

Etiquetas: mysql, registro, repetido, tabla, variables, usuarios
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 06:19.