¿Cómo obtengo el próximo valor de un campo integer con autoincrement?

Saludos gente...

Tengo una tabla, llamémosla clientes, con un campo integer autoincrement llamado ID. Mi pregunta concreta es, ¿cómo obtengo el próximo valor del ID antes de almacenar un nuevo registro?. Ojo sin hacer una consulta del tipo "Select ID + 1 as SiguienteID from clientes order by ID Desc Limit 0,1" o similar.

El MDB que uso es MySQL.

sirve mysql_insert_id??

Hola Willy, no se si sea parecido, peru tuve un problema similar, queria saber el ultimo registro insertado en un campo autoincrement y lo solucioné con mysql_insert_id solo sirve despues de la insercion de un registro, la almacenas en una variable y la puedes utilizar

mysql_insert_id es una función de PHP

Pero deben existir equivalentes en otras plataformas o lenguajes de programación. ¿Sospecho que Willy hace la pregunta para Ruby on Rails?

Si estás en PHP Max tiene razón, mysql_insert_id() es talvez tu mejor opción.

Alexis Bellido
Drupal en 15 gotas, la forma más rápida de aprender a usar un administrador de contenidos

Pues iba por el rumbo de

Pues iba por el rumbo de Rails, pero, básicamente alguna sentencia SQL estaría más que bien.

William Wong Garay
Gerente General de TIPeru COM
Webmaster de
Negociando por Internet y KarpaPeru
Blog: http://willy.tiperu.com

Tambien es funcion de Mysql

No me fije del lenguaje, pero buscando un poco me entere que mysql_insert_id y similares son funciones de Mysql como lo pueden chequear en:
How to Get the Unique ID for the Last Inserted Row
mysql_insert_id
aca hay ejemplos de varias funciones entre ellas LAST_INSERT_ID

:)

Gracias por el dato

Saludos MaXaC, gracias por el dato, pero lo que yo necesito es obtener el próximo valor del ID antes de haber almacenado cualquier registro. El LAST_INSERT_ID te da el último valor de un registro ya almacenado (INSERT).

Bueno, tendré que quedarme con la solución menos elegante :S
-------------------------
William Wong Garay
Gerente General de TIPeru COM
Webmaster de
Negociando por Internet y KarpaPeru
Blog: http://willy.tiperu.com

Revisa la solución de Drupal

Para mantener la independencia de la base de datos los muchachos de Drupal optaron por usar una tabla adicional, sequence, que lleva la cuenta de los números de cada registro.

Esto añade algo de trabajo a la aplicación pero te permite un control total sobre los id de los registro, incluso antes de crearlos.

Revisa el código de Drupal para ver como lo implementan.

Alexis Bellido
Drupal en 15 gotas, la forma más rápida de aprender a usar un administrador de contenidos

Una opción

Quizas mi logica este equivocada pero creo que eso se puede lograr usando solo PHP.

Es decir:

Recorremos la BD y obtener el ultimo registro y lo almacenamos en una variable + 1. A un que este definido como autoincrement se obtendra el valor deseado antes de ser insertado.

No teman en corregirme si he dicho una tonteria XD

Saludos.

http://x-web.blogcindario.com/

La idea es hacerla a nivel de BD

Saludos x-web, tu idea es válida, pero la idea es hacerla a nivel de la base de datos.

Una salida es esta:

"select max(id) + 1 as prox_id from clientes"

Pero si tu tabla esta vacía te dará un valor nulo. Claro que al final lo guardas en una variable y puedes validar si esta nula o no. ;)

---------------------------
William Wong Garay
Gerente General de TIPeru COM
Webmaster de
Negociando por Internet y KarpaPeru
Blog: http://willy.tiperu.com

Ayuda a las victimas del terremoto