Esto funciona perfectamente. Nosotros lo tenemos implementado hace mucho tiempo 
y anda 10 puntos. Lo usamos como numerador para varias tablas.
 
Para simplificar un poco la cosa creamos un SP que devuelve el numerador. La 
ventaja que tiene es que si solo necesitamos un numerador antes de grabarlo en 
la BD, ya lo tenemos. La desventaja es que si el insert de por ejemplo una 
factura da error, el numerador se pierde y se pasa al proximo, pero en nuestro 
caso esto funciona de maravilla.
 
La ventaja que tambien lleva usar esto es que se pueden volver atras 
manualmente los numeradores para que empiecen desde el numero que necesitemos.
 

CREATE PROC spObtieneNumerador
 @NombreTabla varchar(60)
AS
 
BEGIN TRAN
 
DECLARE @UltimoValor int 
 
 IF NOT Exists(SELECT * FROM grlNumeradores WHERE [EMAIL PROTECTED])
 BEGIN
  INSERT INTO grlNumeradores (UltimoValor, TablaReferente) VALUES (0, 
@NombreTabla)
 END
 
 UPDATE grlNumeradores SET @UltimoValor = UltimoValor = UltimoValor + 1 WHERE 
[EMAIL PROTECTED]  
 IF @@ERROR <> 0
 BEGIN
  ROLLBACK TRAN
  SELECT -1 AS UltimoValor  
 END
 ELSE
 BEGIN
  COMMIT TRAN
  SELECT @UltimoValor AS UltimoValor
 END
 
GO


________________________________

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Pablo Bellone
Enviado el: Viernes, 09 de Noviembre de 2007 1:55 p.m.
Para: Hernán Zaldívar
Asunto: [dbms] Genera nros. duplicados



Maxi, buenos días!
Muchas gracias!
Es lo que estaba necesitando. 
 
Saludos,
Pablo Bellone.



________________________________

        From: [EMAIL PROTECTED]
        To: [EMAIL PROTECTED]
        Subject: [dbms] Genera nros. duplicados
        Date: Thu, 8 Nov 2007 19:52:00 -0300
        
        

        Hola Pablo, estas en lo correcto, hay una forma de hacerlo en una sola 
sentencia, te paso un articulo que escribi ya hace un tiempo asi lo usas de 
referencia

         

        
http://www.sqlgurus.org/SQLGURUS/Como+manejar+los+datos+autonumericos.doc

         

        cualquier duda me consultas!

         

        -----------------------------------------------------------

        Microsoft MVP en SQL Server

        Mentor asociado en SQLTotalConsulting

        Excelencia en servicios y consultoria  SQLServer

        www.sqltotalconsulting.com

        -----------------------------------------------------------

         

        De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Pablo Bellone
        Enviado el: miércoles, 07 de noviembre de 2007 11:28 a.m.
        Para: Maxi
        Asunto: [dbms] Genera nros. duplicados

         

        Buenos días!
         
        Tengo dentro de un SP este fragmento que utiliza para obtener un nro. 
de remito.
        El problema es que diariamente, por concurrencia me da 2 veces el mismo 
nro.
        Recuerdo que en alguna charla Maxi Accotto habia explicado una forma de 
hacer todo en una sola instrucción. Es así o estoy errado?
         
        Como puedo resolver para que no me genere nros. duplicados.
         
         
        UPDATE SeqRemitos SET Sequence = Sequence + 1  WHERE SucursalesID = 
@Sucursalid    
        SELECT @Numero = Sequence FROM SeqRemitos WITH(NOLOCK)  WHERE 
SucursalesID = @Sucursalid)
         
         
        Desde ya muchas gracias!!
        Saludos,
        Pablo Bellone.
        
        

        
________________________________


        Discover the new Windows Vista Learn more! 
<http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE> 


________________________________

Discover the new Windows Vista Learn more! 
<http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE>  

Responder a