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