Gabriel puedes crear un procedimiento almacenado encargado de incrementar la
columna y devolver ese valor.
create procedure dbo.p1
@next_id int output
as
set nocount on
update t1
set @next_id = c1 = c1 + 1
return @@error
go
create procedure dbo.p2
@p1 int,
@p2 varchar(25)
as
set nocount on
declare @rv int
declare @error int
declare @next_id int
begin transaction
exec @rv = dbo.p1 @next_id output
set @error = coalesce(nullif(@rv, 0), @@error)
if @error != 0 goto ErrorHandler
insert into t1(c1, c2, c3)
values(@next_id, @p1, @p2)
set @error = @@error
if @error != 0 goto ErrorHandler
commit transaction
return @@error
ErrorHandler:
if @@trancount > 0
begin
rollback transaction
raiserror('Error insertando tal y mas cual entidad.', 16, 1)
end
go
AMB
Post by Gabriel SouthHola maxi..
Lo siguiente, preciso obtener un numero de un campo que otros procesos
(sistemas) autonumeran (incrementando, usando sus propios metodos) y sumarle
1.
Una vez sumado, yo genero otro registro con datos y ese numero.
Cabe aclarar que ese numero es unico y primary key.
La tabla es bloqueada por muy poco tiempo, solo el tiempo que tarda en tomar
ese numero e insertar el registro, de esa forma me aseguro que otros
procesos no esten insertando algun registro con mi numero.
Da para entender?
Gracias...
Post by MaxiHola, bloquear toda una tabla no es para nada una buena idea!! que hace
ese
Post by Maxiproceso?
--
--------------------------
Salu2
Maxi
Post by Gabriel SouthHola,
Tengo una pregunta tecnica para hacerles. Resulta que en un stored procedure
quiero bloquear temporariamente una tabla para trabajar con ella y no
liberarla hasta que finalice el procedimiento, por ahora lo estoy
haciendo
Post by MaxiPost by Gabriel Southcon BEGIN TRANSACTION... pero queria saber si hay algun
metodo/instruccion
Post by MaxiPost by Gabriel Southpara bloquear alguna tabla especifica sin usar el BEGINT TRAN....
Gracias, Gabriel......