Digamos que você tenha algumas tabelas:
Items
------------
ItemID
NumAvailable
-------------
Checkout
-----------
UserID
ItemID
-----------
Você pode criar um gatilho que soma o
ItemID
e compara com o NumAvailable
para aquele item específico. Ficaria mais ou menos assim (pode ter erros, ideia geral apresentada apenas :) . O método de erro obtido em aqui
, pode haver uma maneira melhor disponível):CREATE TRIGGER check_available
BEFORE INSERT ON Checkout
FOR EACH ROW
BEGIN
SELECT IF (COUNT(new.ItemID) > Items.NumAvailable) THEN
DECLARE dummy INT;
SELECT 'No more items to check out!' INTO dummy
FROM new NATURAL JOIN Items WHERE NEW.ItemID = Items.ItemID
END IF;
END