Oii Luis, como você está?
Peço desculpas pela demora em obter um retorno.
Uma TRIGGER é disparada no momento em que uma tabela sofre alteração dos dados, seja um INSERT, UPDATE ou DELETE.
Para fazer com que ela seja aplicada apenas se passar de algum valor específico, podemos adicionar uma condição dentro dela através da cláusula IF. De todo modo, a TRIGGER será disparada, mas só aplicará a alteração se respeitar a condição.
Supondo que estamos cadastrando os colaboradores de uma empresa no banco de dados e temos uma estrutura formada por salário, nome e quantidade vendida, como mostro abaixo:
CREATE TABLE COLABORADORES
(ID SERIAL PRIMARY KEY, SALARIO FLOAT, NOME VARCHAR(50), QTD_VENDIDA INTEGER);
O nosso objetivo é aumentar o salário do colaborador que for cadastrado se ele já tiver vendido mais de 100 unidades dos produtos. Nesse caso, veja que não queremos aplicar algo na tabela inteira, apenas se respeitar a condição. Para isso, a TRIGGER ficará da seguinte maneira:
DELIMITER //
CREATE TRIGGER TG_AUMENTA_SALARIO BEFORE INSERT ON COLABORADORES
FOR EACH ROW
BEGIN
IF (NEW.QTD_VENDIDA > 100) THEN
SET NEW.SALARIO = NEW.SALARIO + (NEW.SALARIO * 0.15);
END IF;
END//
Através do código acima verificamos se o valor da quantidade vendida é maior que 100 e caso seja, aumentamos o salário do colaborador em 15%.
Então, supondo que temos as seguintes inserções:
INSERT INTO COLABORADORES
(SALARIO, NOME, QTD_VENDIDA)
VALUES
(1100.00, 'Paulo Garcia', 250),
(5000.00, 'Sthe Feliciano', 65),
(3500.00, 'João Miranda', 110),
(150.00, 'Millena Dutra', 10),
(345.00, 'Maria Samantha', 15);
Como a quantidade vendida dos colaboradores Paulo e João ultrapassam 100 unidades, o salário de ambos são aumentados em 15%, resultando no valor mostrado na tabela abaixo:
ID | SALARIO | NOME | QTD_VENDIDA |
---|
1 | 1265 | Paulo Garcia | 250 |
2 | 5000 | Sthe Feliciano | 65 |
3 | 4025 | João Miranda | 110 |
4 | 150 | Millena Dutra | 10 |
5 | 345 | Maria Samantha | 15 |
Neste exemplo foi utilizado a TRIGGER para o INSERT, mas a ideia se repete para casos de DELETE e UPDATE.
Qualquer dúvida fico à disposição.
Grande abraço e bons estudos!