1) Este trigger actualiza el stock automáticamente al ingresar un nuevo producto en
una orden
CREATE TRIGGER reducir_stock
AFTER INSERT ON detallesorden
FOR EACH ROW
BEGIN
UPDATE productos
SET stock = stock - [Link]
WHERE id_producto = NEW.id_producto;
END;
//
2) Este trigger lanza un error si se intenta ingresar un detalle de orden con más
cantidad que la disponible
CREATE TRIGGER validar_stock
BEFORE INSERT ON detallesorden
FOR EACH ROW
BEGIN
DECLARE stock_actual INT;
SELECT stock INTO stock_actual
FROM productos
WHERE id_producto = NEW.id_producto;
IF stock_actual < [Link] THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Error: Stock insuficiente para el producto solicitado.';
END IF;
END;
//
3)Este trigger devuelve al stock los productos si se borra una línea de orden:
CREATE TRIGGER restaurar_stock
AFTER DELETE ON detallesorden
FOR EACH ROW
BEGIN
UPDATE productos
SET stock = stock + [Link]
WHERE id_producto = OLD.id_producto;
END;
//