CONSULTA DE TRANSACCIONES

14/03/2008 - 20:20 por Samuel SMH | Informe spam
Hola foro;
una duda.. necesito grabar en 2 pc's al mismo tiempo 2 vouchers con
diferentes numeros correlativos;
pero la duda es:
Yo capturo al inicio de la grabacion los numeros correlativos de estso
vouchers, que pasaria si ambas pc's graban a la vez?; quiero evitar que se
dupliquen los correlativos:
estoy usando transacciones, al coger el correlativo en ese momento actualizo
mi tabla de correlativos para que quede bloqueada mientras se va grabando mi
cabecera y mi detalle; al finalizar cierro la transaccion y libero las tablas.
Es la forma correcta de hacerlo? no tendre ningun problema ya que no tengo
indice principal creado por ese campo?

Espero su comprension..
Gracias de antemano.
Samuel SMH.
LIMA- PERU

Preguntas similare

Leer las respuestas

#1 Jaime Lucci
14/03/2008 - 21:50 | Informe spam
¿Porque no creas en la tabla un campo identity para el numero de vouchers?
al ser identity no se duplican y no necesitas hacer ningún control. Si
quieres, le puedes dar a ese campo un número inicial para que no sea desde
1, y desde ese número inicial que tomaría el primer registros, los
siguientes serán correlativos a él.

Y para recuperar dicho numero, puedes mandar en el SP de inserción un
parámtro de salida que te devuelva el código creado para el registro que
acabas de agregar.

Y lo que haces, si anda, me parece bien.

Saludos.

"Samuel SMH" escribió en el mensaje
news:
Hola foro;
una duda.. necesito grabar en 2 pc's al mismo tiempo 2 vouchers con
diferentes numeros correlativos;
pero la duda es:
Yo capturo al inicio de la grabacion los numeros correlativos de estso
vouchers, que pasaria si ambas pc's graban a la vez?; quiero evitar que se
dupliquen los correlativos:
estoy usando transacciones, al coger el correlativo en ese momento


actualizo
mi tabla de correlativos para que quede bloqueada mientras se va grabando


mi
cabecera y mi detalle; al finalizar cierro la transaccion y libero las


tablas.
Es la forma correcta de hacerlo? no tendre ningun problema ya que no tengo
indice principal creado por ese campo?

Espero su comprension..
Gracias de antemano.
Samuel SMH.
LIMA- PERU

Respuesta Responder a este mensaje
#2 Maxi Accotto
16/03/2008 - 16:48 | Informe spam
Hola, ojo con esto, no es para nada bueno usar los identity asi, es verdad
que se autonumeran pero tambien es verdad que si la transaccion falla quedan
huecos en la numeracion.
Para numerar se deberia usar una tabla numeradora y actualizar contra esa
tabla para sacar el proximo numero.

Aca paso un ejemplo de como se deberia trabajar:

use northwind
go

create table numeradora (comprobante varchar(30),
ultimo_numero int)
go

insert into numeradora values ('oc',0)

create table oc (numero int,
fecha datetime not null)
go


create proc usp_garbar_oc @fecha datetime
as

declare @proximo_numero int

begin tran

update numeradora
set @proximo_numero = ultimo_numero = ultimo_numero + 1
where comprobante = 'OC'

INSERT INTO OC VALUES (@proximo_numero,@fecha)

commit tran
go

select * from oc

select * from numeradora

exec usp_garbar_oc '20080310'

select * from oc

select * from numeradora

exec usp_garbar_oc '20080311'

select * from oc

select * from numeradora




Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Jaime Lucci" escribió en el mensaje de
noticias:#
¿Porque no creas en la tabla un campo identity para el numero de vouchers?
al ser identity no se duplican y no necesitas hacer ningún control. Si
quieres, le puedes dar a ese campo un número inicial para que no sea desde
1, y desde ese número inicial que tomaría el primer registros, los
siguientes serán correlativos a él.

Y para recuperar dicho numero, puedes mandar en el SP de inserción un
parámtro de salida que te devuelva el código creado para el registro que
acabas de agregar.

Y lo que haces, si anda, me parece bien.

Saludos.

"Samuel SMH" escribió en el mensaje
news:
Hola foro;
una duda.. necesito grabar en 2 pc's al mismo tiempo 2 vouchers con
diferentes numeros correlativos;
pero la duda es:
Yo capturo al inicio de la grabacion los numeros correlativos de estso
vouchers, que pasaria si ambas pc's graban a la vez?; quiero evitar que
se
dupliquen los correlativos:
estoy usando transacciones, al coger el correlativo en ese momento


actualizo
mi tabla de correlativos para que quede bloqueada mientras se va grabando


mi
cabecera y mi detalle; al finalizar cierro la transaccion y libero las


tablas.
Es la forma correcta de hacerlo? no tendre ningun problema ya que no
tengo
indice principal creado por ese campo?

Espero su comprension..
Gracias de antemano.
Samuel SMH.
LIMA- PERU





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida