Correlativos sin Identiy

14/02/2004 - 18:56 por Eloy Paredes | Informe spam
Hola amigos, espero me puedan ayudar...

Necesito un campo autonumerico pero sin usar identity,
cual es la mejor forma de implementarlo mediante
procedimientos almacenados, de modo que no tenga problemas
de concurrencia...?, seria excelente si me mandan un
ejemplo.

Muchas gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Maximiliano d. Accotto
15/02/2004 - 02:17 | Informe spam
Hola,
Nuestro amigo Ulises en el Hilo "Correlativos (Correccion)" ha dado un
ejemplo de como se hace, fijate si te es util

Saku2

Maxi


"Eloy Paredes" escribió en el mensaje
news:1088e01c3f323$d4528a90$
Hola amigos, espero me puedan ayudar...

Necesito un campo autonumerico pero sin usar identity,
cual es la mejor forma de implementarlo mediante
procedimientos almacenados, de modo que no tenga problemas
de concurrencia...?, seria excelente si me mandan un
ejemplo.

Muchas gracias de antemano.

Respuesta Responder a este mensaje
#2 ulises
16/02/2004 - 07:34 | Informe spam
Creo que Eloy se refiere a controlar el valor de un campo numèrico
durante la inserción de un registro en una tabla, si ese es el caso
puedes :

1.- Mantener en una tabla el último registro.
2.- Obtener el valor más alto directamente desde la tabla usando
SELECT COALESCE(MAX(numero),0)+1 FROM tabla

Saludos,
Ulises

On Sat, 14 Feb 2004 22:17:45 -0300, "Maximiliano d. Accotto"
wrote:

Hola,
Nuestro amigo Ulises en el Hilo "Correlativos (Correccion)" ha dado un
ejemplo de como se hace, fijate si te es util

Saku2

Maxi


"Eloy Paredes" escribió en el mensaje
news:1088e01c3f323$d4528a90$
Hola amigos, espero me puedan ayudar...

Necesito un campo autonumerico pero sin usar identity,
cual es la mejor forma de implementarlo mediante
procedimientos almacenados, de modo que no tenga problemas
de concurrencia...?, seria excelente si me mandan un
ejemplo.

Muchas gracias de antemano.




Respuesta Responder a este mensaje
#3 Adrian D. Garcia
16/02/2004 - 21:26 | Informe spam
Copio el codigo que envie a una pregunta similar. Esta solucion utiliza una
tabla en donde se guardan el ultimo nro. generado de una secuencia:

CREATE TABLE generatepk

(pkname VARCHAR(10) PRIMARY KEY,

pkvalue INT DEFAULT 0)

GO

*/


INSERT INTO generatepk VALUES ('SQNOFACT', 4566)

INSERT INTO generatepk VALUES ('SQNOEMP', 981)

GO



CREATE procedure nextval

@sqname char(128),

@retval int OUTPUT

as


IF NOT EXISTS( SELECT * FROM generatepk WHERE pkname = @sqname)

RAISERROR ('No existe una secuencia para la clave %s' , 16, 1 , @sqname )
WITH SETERROR


UPDATE generatepk

SET

@retval = pkvalue= pkvalue+ 1

WHERE

pkname = @sqname

RETURN

GO




BEGIN TRAN

DECLARE @numero INT

EXEC nextval 'SQNOEMP' , @numero OUTPUT

select @numero



COMMIT TRAN


Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Eloy Paredes" wrote in message
news:1088e01c3f323$d4528a90$
Hola amigos, espero me puedan ayudar...

Necesito un campo autonumerico pero sin usar identity,
cual es la mejor forma de implementarlo mediante
procedimientos almacenados, de modo que no tenga problemas
de concurrencia...?, seria excelente si me mandan un
ejemplo.

Muchas gracias de antemano.

Respuesta Responder a este mensaje
#4 Eloy Paredes
18/02/2004 - 03:03 | Informe spam
Muchas Gracias por la ayuda es justo lo que queria.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida