Hola gente
Quiero confirmar algo de los books y de algunos post del foro
Tengo ciertas tablas de uso muy corriente. Pongo los campos mas importantes
para esta consulta
Pallet
Id_Pallet, Id_Producto, Id_Estado_Pallet, Bultos_x_Pallet, etc
Ubicacion
Id_Ubicacion, Nave, Calle, Nivel, etc
UbicacionXPallet
Id_Ubicacion_x_Pallet
Id_Pallet
Id_Ubicacion
En las recepciones se crean pallets, tantos como unidades de cada producto
ingresen, en en la tabla Pallet y se los ubica en Ubicacion_x_Pallet. Las
ubicaciones estan creadas de antemano.
En las expediciones se buscan pallets en Ubicacion_x_Pallet cuyo
Estado_Pallet lo permita, y se van descontando Bultos_x_Pallet de cada
Pallet hasta alcanzar la cantidad a expedir por producto, modificando la
cantidad de Bultos_x_Pallet (si se toma todo el pallet este se da de baja
logica con Bultos_x_Pallet = 0).
En las reubicaciones de pallet se modifica la Ubicacion_x_Pallet
Como esto se realiza a traves de Ordenes de Recepcion o Expedicion o
Reubicacion y estas cuentan de varios items, esto se realiza dentro de
transacciones. Se abre una transaccion, se procesan todos los items y se
cierra si esta ok,
El problema es que existen muchas consultas sobre estas tablas para
determinar el stock, las ubicaciones y demas.
Ahora al eje del problema, segun he leido en cada transaccion que hago por
defecto estoy bloqueando cada una de estas tablas que uso en los insert y
update y las consultas deben esperar a que terminen las transacciones para
retornar los datos.
Como deberia hacer para que esto no suceda a nivel de toda la tabla y si de
los registros que estan en juego.
Es decir, si estoy ingresando Pallets del Id_Producto = 1 que al querer
expedir desde otra terminal seleccione los pallets existentes pero no
aquellos que estoy ingresando.
Vi algo de WITH (ROWLOCK) con lo cual bloqueo solo ese registro.
Tendria que tener en cuenta esto en todos los procesos dentro de
transacciones que trabajen con estas tablas entonces?
Espero sus comentarios
Como siempre, gracias de antemano
Leer las respuestas