-- Proteção física do razão de estoque contra edição ou exclusão manual.
-- A variável de sessão é reservada a rotinas controladas de manutenção/teste.

DROP TRIGGER IF EXISTS trg_estoque_movimentacoes_bloqueia_update;
DROP TRIGGER IF EXISTS trg_estoque_movimentacoes_bloqueia_delete;

DELIMITER $$
CREATE TRIGGER trg_estoque_movimentacoes_bloqueia_update
BEFORE UPDATE ON estoque_movimentacoes
FOR EACH ROW
BEGIN
    IF COALESCE(@estoque_manutencao, 0) <> 1 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'O histórico de estoque é imutável';
    END IF;
END$$

CREATE TRIGGER trg_estoque_movimentacoes_bloqueia_delete
BEFORE DELETE ON estoque_movimentacoes
FOR EACH ROW
BEGIN
    IF COALESCE(@estoque_manutencao, 0) <> 1 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'O histórico de estoque é imutável';
    END IF;
END$$
DELIMITER ;
