1
resposta

Criação de trigger

Como consigo criar uma trigger para salvar dados antigos em uma tabela, após a tabela principal receber updates?

1 resposta

Oii Juliana, como você está?

Peço desculpas pela demora em obter um retorno.

Supondo que o banco utilizado seja o MySQL, uma opção de obter este resultado é criar a uma TRIGGER com o AFTER UPDATE que irá realizar um INSERT na tabela dados_antigos, sempre que houver um UPDATE na tabela principal. Através da cláusula OLD, capturamos os registros que serão modificados. A seguir um exemplo:

delimiter //
CREATE TRIGGER insert_dados_antigos AFTER UPDATE ON principal
    FOR EACH ROW
       BEGIN
           INSERT INTO dados_antigos(nome, idade) 
           VALUES (OLD.nome, OLD.idade);
       END;
//

Caso queira testar todo o código, deixo abaixo o script utilizado:

-- Criando tabelas
CREATE TABLE principal(
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(50) ,
    idade INT
);

CREATE TABLE dados_antigos(
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(50) ,
    idade INT
);

-- Inserção dos dados
INSERT INTO principal(nome, idade) VALUES ("Nádia", 19);
INSERT INTO principal(nome, idade) VALUES ("Danielle", 20);
INSERT INTO principal(nome, idade) VALUES ("Beatriz", 22);
INSERT INTO principal(nome, idade) VALUES ("Oliver", 34);

-- Seleção dos dados
SELECT * FROM principal;
SELECT * FROM dados_antigos;

-- Criação do TRIGGER
delimiter //
CREATE TRIGGER insert_dados_antigos AFTER UPDATE ON principal
    FOR EACH ROW
       BEGIN
           INSERT INTO dados_antigos(nome, idade) 
           VALUES (OLD.nome, OLD.idade);
       END;
//

-- Realizando UPDATE
UPDATE principal
SET idade = 22
WHERE id = 1;

-- Seleção dos dados
SELECT * FROM principal;
SELECT * FROM dados_antigos;

Qualquer dúvida fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software