Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Recuperar valor autoincrementable. (http://www.forosdelweb.com/f21/recuperar-valor-autoincrementable-479303/)

masterjail 06/04/2007 20:16

Recuperar valor autoincrementable.
 
Hola, estoy usando ADOdb para acceder a la base de datos de una aplicación PHP que estoy desarrollando.

En una parte de la aplicación existe un formulario para dar de alta en el sistema a una persona. Dicha persona tendrá un identificador, el cual es un valor autoincrementable.

Está claro que cuando haga el insert ese valor se asignará automáticamente y todo será correcto...

...pero yo quiero saber ese valor antes de rellenar el formulario para
que aparezca en él...

¿Hay alguna forma de saber cuál será el siguiente autoincrementable?

De momento me sirve esto:

Código PHP:

$id $db->connection->Execute("SELECT COUNT(id) as id FROM persona");
$id $id->fields["id"] + 1

es decir, contar cuantos registros hay e incrementar en uno el valor (me sirve porque no habrá posibilidad de eliminar registros de esa tabla), pero me parece un poco inapropiado.

He buscado por el foro y por Internet y lo más parecido que he encontrado ha sido eso.

¿Alguien conoce alguna manera mejor? ¿O un método con ADOdb que lo haga?

Muchas gracias.

kaninox 06/04/2007 23:25

Re: Recuperar valor autoincrementable.
 
pues la idea seria traer como bien tu codigo lo hace el ultimo id y sumarle 1 ahora bien como sabes que trae el ultimo y no el primero :o pues debes agregar un ORDER BY desc en tu caso para que traiga siempre el ultimo...

otra pregunta estas dispuesto a perder id's ?
lo digo por el tema de que que pasa si dos personas quieren ingresar datos y una persona entra al formulario pero no ha ingresado nada aún, entonces tiene el valor id 3 y otra persona entra tambien al formulario y como no a habido ningun ingreso, tambien obtiene el valor 3 ? tonces gana quien primero ingrese y al otro de dara fatal error :/
pues te lo digo por que debes parchear eso y como lo consigues pues perdiendo id's y como eso pues la persona que entra al formu gana un id y lo inserta de forma inmediata entonces al ingresar el formulario completo solo actualiza lo correspondiente al id... entonces si una persona entro ya gana el id 3 y puesto en base de datos para cual si otra persona en el proceso ingresa obtendria el valor 4, y como pierdes id's pues si la persona ingresa al formu pero no hace nada e hay tu perdida de id's...
ahora decides tu como lo implementas, tambien puedes generar ids no autoincrementables de forma aleatoria y que sean diferentes alos que estan en base de datos es otra opcion ids de numeros grandes con dificultades de repeticion ;)

yournightmare86 11/04/2007 10:47

Re: Recuperar valor autoincrementable.
 
Pues lo que se me ocurre(sin saber para que quieres saber el próximo código) es usar una función PHP que te devuelve el último valor de un campo autoincrementable.
Código:

$ultimo_codigo=mysql_insert_id();
De todas formas revisa tu idea, porque para esos códigos no siempre va de uno en uno y en orden ascendente. En ocasiones se salta números, por una cuestión o por otra. Utiliza el valor que quieres en función de como más optimizado y fácil le sea.
Saludos.


La zona horaria es GMT -6. Ahora son las 03:49.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.