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>
