Saludos Pedro, yo opino que deberias crear una vista que te de la existencia de cada producto, ej.
TablaMovimientos
IdProducto | Cantidad
-------------------------------
1 | 10
2 | 4
2 | -1
2 | -1
1 | -4
1 | -6
en esta tabla se registrarán todas las entradas y salidas de mercancia, despues creamos una vista (V_Existencia)con la siguiente consulta:
SELECT IdProducto, sum(Cantidad) as Existencia
FROM TablaMovimientos
GROUP BY IdProducto
los datos de la vista quedarían mas o menos así
IdProducto | Existencia
-------------------------------
1 | 0
2 | 2
entonces cada que quieras revisar la cantidad de producto que tienes disponible, desde tu aplicacion, ejecutas la siguiente consulta
SELECT Existencia
FROM V_Existencia
WHERE IdProducto = 1
y te devolvería algo así:
Existencia
--------------
0
y desde tu aplicacion validas la existencia (Existencia <=0).
tambien puedes saltarte la creacion de la vista y ejecutar la consulta desde tu aplicacion
SELECT sum(Cantidad) as Existencia
FROM TablaMovimientos
WHERE IdProducto = 1
Espero que todo esto te sea de ayuda.