SQL - Bloqueos SQL

 
Vista:

Bloqueos SQL

Publicado por Oscar González (1 intervención) el 08/11/2002 19:04:35
Hola amigos: Yo estoy trabajando con SQL Server v7.0 y VB v6.0, lo concreto respecta de la concurrencia sobre un registro, es cierto que SQL maneja muy bien el tema de los bloqueos, pero que debo de hacer para una aplicación que es multiusuario y rebaja stock de productos, si por ejemplo dos estaciones intentan leer un mismo registro, almenos a una de ellas debiera no tener acceso de lectura sobre el registro, mientras la otra completa su actualización o definitivamente no hace nada con el registro, he probado varias formas desde el rowlock en adelante, pero nada ha resultado, el uso de flag en las tablas me parece que no es lo mas correcto, por que me pregunto que pasa si una estación que bloqueó un registro de esta forma se cae, o se corta la luz para ese servicio, el resto de las estaciones no tendría acceso al registro ya se indicaría como bloqueado, siendo no la realidad.
Me despido atentamente, esprándo una respuesta.
de todas maneras este mi emails ( [email protected] )
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Bloqueos SQL

Publicado por Isaías Islas (5072 intervenciones) el 09/11/2002 00:05:20
Hola

Para iniciar con el tema, debe usted pensar en desarrollar CLIENTE-SERVIDOR, sus programas en VB, NO DEBERAN contener codigo SQL, tales como INSERT, DELETE, UPDATE, solamente deberan ejecutar procedimientos almacenados.

Haga un procedimiento almacenado que RESTE de su Inventario la cantidad en cuestion

CREATE PROCEDURE pr_RestaInventario
@ProductoID int,
@Cantidad int
AS

-- Valido la existencia del producto
IF NOT EXISTS(SELECT ProductoId FROM INVENTARIO WHERE ProductoId = @ProductoId)
BEGIN
SELECT '<< Error >>, Codigo de Producto No valido'
RETURN(0)
END

-- Inicio mi transacción
BEGIN TRAN trn_Inventario
UPDATE INVENTARIO SET Cantidad = Cantidad - @Cantidad WHERE ProductoId = @ProductoId
COMMIT TRAN trn_Inventrio

Espero le sirva este codigo, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar