ColdFusion - Como obtengo el ultimo dato insertado en una tabla

 
Vista:

Como obtengo el ultimo dato insertado en una tabla

Publicado por MaryChuyG (7 intervenciones) el 25/06/2005 17:34:50
Hola:

¿Alguien puede ayudarme?

Estoy haciendo una aplicacion con ColdFusion. Tengo una base de datos "Amigos"
Tengo una tabla "A",
(id es autoincrement y unique)
id nombre
1 Juan
2 Pedro
3 Manuel

un formulario "F".

Dentro de "F" tengo entre otros datos un <CFSELECT> (1,2,3,4,5) de OPCION MULTIPLE ("SM"). En donde los valores son:
Valor Dato
1 Lucia
2 Karla
3 Nancy
4 Victoria
5 Camila

Por ejemplo puedo elejir (2,4,5)

y por ultimo una tabla "B" con:
idA amigo

La idea es insertar dentro de "A" todos los datos de "F" a excepcion de los datos contenidos en "SM" (2,4,5), y debo de insertar en "B" un registro por cada dato que haya en "SM". Así "Manuel", puede ser amigo de Karla,Victoria y de Camila.
"B"
idA amigo
1 3
1 5
2 1
2 2
3 2
3 4
3 5

Estoy haciendo los procesos por separado, primero inserto en la tabla "A" todos los otros datos de la forma y luego con query.recordcount tomo la ultima ID de el ultimo registro que inserté y fianlmente inserto (con un ciclo) en "B" un registro por cada elemento de "SM".

Lo anterior funciona a la perfeccion mientras no intente que multiples usuarios inserten datos al mismo tiempo a travez de la red, ya que el recordcount me toma el ultimo insertado pero para este caso no siempre es "el mio" puesto que ya alguien mas inserto otro en lo que se ejecuta mi query....

¿Alguien sabe si existe en ColdFusion alguna funcion o metodo para tomar la ultima id que inserte sin tener que utilizar el recordcount del query?

Help me ! please.

Gracias
MaryChuy
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como obtengo el ultimo dato insertado en una ta

Publicado por Rogelio Rosales (29 intervenciones) el 21/07/2005 21:20:42
Debido a la manera q diseñaste tus tablas, es dificil q puedas tener el dato como lo deseas a traves de una funcion. Aqui hay 2 sugerencias,
1.- Que el ID no sea automatico, y q tu controles el ID, de esa manera podrias definir tu ID correspondiente.
2.- Existen unas variables que puedes usar como referencia que son
CFID y CFTOKEN, pero estas variables tu las debes de tener referenciados en algun campo, para q sepas exactamente q usuario realiza la insercion, estas variables estan disponibles siempre y son uncas, por lo q pueden ser de ayuda.
De entrada hay esas 2 opciones, si se me ocurre otra o a alguien del foro le ocurre otra, la escribiremos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como obtengo el ultimo dato insertado en una ta

Publicado por Jack (3 intervenciones) el 21/07/2005 22:06:08
Obvio que si se puede.

1. Si tu base de datos es MS SQL, puedes utilizar el siquiente codigo:

<cfquery name="insertData">
SET NOCOUNT ON
INSERT INTO Table ...
VALUES ...
SELECT ThisID = @@Identity
SET NOCOUNT OFF
</cfquery>

En tal caso el ultimo ID sera #insertData.ThisID#

2. Si tu base es Access

<cftransaction>
<cfquery>
INSERT INTO Table ...
VALUES ...
</cfquery>
<cfquery name="GetID">
SELECT MAX(ID_Field) AS ThisID
FROM Table
</cfquery>
<cfset LastID = GetID.ThisID>
</cftransaction>

3. En otros casos puedes simplemente utilizar <cflock scope="APPLICATION">, esto te asegura que ningun otro usuario pueda insertar datos mientras el primero esta ejecutando el block de codigo de inserciones y obtencion de ultimo ID.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar