Google
Web dns.bdat.net

Re: [PHP-ES] Obtener el ultimo ID

Write haof XML files: Diego Firmenich ( diego.firmenich@gmail.com)
Fecha: jue 03 nov 2005 - 20:11:37 CET


Aparentemente por lo que dices crearte un objeto secuencia deberia
simplicarte las cosas.
Para ello corre la siguiente sentencia
CREATE SEQUENCE nombre_secuencia;
Eso crea un objeto secuencia por defecto, es decir que empieza en uno y
se incrementa de a uno cada vez que la usas (podes modificar estos
parametros y otros mas como el numero maximo y el minimo por ejemplo).

Despues para utilizarla, el objeto secuencia tiene dos seudocolumnas:
CURRVAL y NEXTVAL
Entonces podes hacer este tipo de cosas
INSERT INTO una_tabla (id,nombre) VALUES
(nombre_secuencia.nextval,"Oscar");

Y para ver cual es el ultimo id que diste podes consultar
SELECT nombre_secuencia.currval FROM DUAL;

Para apreciar bien el funcionamiento podes jugar con DUAL.
SELECT nombre_secuencia.nextval FROM DUAL;
SELECT nombre_secuencia.currval FROM DUAL;

Eso seria para lograr un manejo mas prolijo en cuanto a los
identificadores.
Para eliminar la competencia evidentemente no sirve. Puede pasar que
previo a consultar el valor actual de la secuencia otra sesion haga un
insert, y el valor retornado no sea el esperado.
Para eliminar esa competencia deberias crear un procedimiento almacenado
que haga una especie de envoltorio (wrapper) del insert y devuelva el
valor de la secuencia.

Bueno espero te sirva.
Saludos
Diego Firmenich



Este archivo fue generado por hypermail 2.1.7 : sáb 18 mar 2006 - 18:23:40 CET