Trigger que salva histórico de alteração do salário de funcionário

Olá, vou mostrar para vocês uma trigger ou gatilho que será disparado no evento AFTER UPDATE (Depois de alterar/editar) que encontra-se na tabela funcionários. Este gatilho irá verificar se o salário que esta sendo inserido é diferente do atual e se for diferente irá popular a tabela de histórico com o salário antigo deste funcionário. Obs.: Este exemplo foi criado em base de dados MySQL.

Rotina de criação da tabela FUNCIONARIOS:


CREATE TABLE `funcionarios` (
  `id` int(11) NOT NULL,
  `nome` varchar(40) DEFAULT NULL,
  `salario` decimal(9,2) DEFAULT NULL,
  PRIMARY KEY (`id`))

Rotina de criação da tabela HISTOLD:

CREATE TABLE `histold` (
  `idfun` int(11) NOT NULL AUTO_INCREMENT,
  `dataalt` datetime NOT NULL,
  `salarioold` decimal(9,2) NOT NULL,
  PRIMARY KEY (`idfun`,`dataalt`,`salarioold`))

Trigger na tabela FUNCIONARIOS:

delimiter $$

CREATE TRIGGER `NomeDeSuaBase`.`NomeDaTrigger`
AFTER UPDATE ON ` NomeDeSuaBase `.`funcionarios`
FOR EACH ROW
BEGIN

    if (new.salario <> old.salario) THEN
        INSERT INTO histold(idfun, dataalt, salarioold) values (old.id, now(), old.salario);
    END IF;
    
END
delimiter ;


Nenhum comentário:

Postar um comentário