Hola,
Cree una SP que inserta datos en una tabla y por cada grupo de datos que
graba, genera un identificador unico para ese grupo.
Tengo un problema que cuando 2 o mas pcs ejecutan el proceso al mismo
tiempo, no genera un unico numero si no que se repite, y por consiguiente da
error
Vean el codigo:
BEGIN TRANSACTION
Select @IDPROCESS=(select isnull(max(ID),0)+1 From tabla1)
INSERT INTO Tabla1
select @IDPROCESS,* from temporal#
COMMIT TRANSACTION
DROPT TABLE TEMPORAL#
No se supone que entre el begin transaction y el commit, "tabla1" queda
temporariamente bloqueada ??? o es solo para insertar y deletar???
Como soluciono ese problema para que si o si genere un ID unico no importa
cuantos procesos esten accediendo a la tabla ????????
Tambien probe de la siguiente forma, creando una tabla con un contador y un
stored procedure extra para generar el numero, pero tampoco funciona!!
BEGIN TRANSACTION
Exec gereasynum @IDPROCESS output
INSERT INTO Tabla1
select @IDPROCESS,* from temporal#
COMMIT TRANSACTION
Y la procedure que genera el numero:
ALTER procedure GerEASYNum
/*
*/
@OUT_Registro FLOAT OUTPUT
AS
Begin
BEGIN TRANSACTION
select @out_registro=(select count(*) from contador)
If @out_registro=0
begin
Insert INTO CONTADOR
(counter1) values(0)
end
Select @OUT_Registro=(select isnull(max(counter1),0)+1 From contador)
UPDATE CONTADOR
SET counter1=@out_registro
COMMIT TRANSACTION
END
Gracias,
Claudio.
Leer las respuestas