MySQL APÓS INSERT Trigger

Resumo : neste tutorial, você aprenderá como criar um AFTER INSERTgatilho MySQL para inserir dados em uma tabela após inserir dados em outra tabela.

Introdução aos gatilhos MySQL AFTER INSERT

Os gatilhos do MySQL AFTER INSERTsão invocados automaticamente após a ocorrência de um evento de inserção na tabela.

O seguinte mostra a sintaxe básica de criação de um AFTER INSERTgatilho MySQL:

CREATE TRIGGER trigger_name
    AFTER INSERT
    ON table_name FOR EACH ROW
        trigger_bodyLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

Primeiro, especifique o nome do gatilho que deseja criar após as CREATE TRIGGERpalavras-chave.

Segundo, use AFTER INSERTa cláusula para especificar o horário para invocar o gatilho.

Terceiro, forneça o nome da tabela na qual deseja criar o gatilho após a ONpalavra-chave.

Finalmente, defina o corpo do gatilho que consiste em uma ou mais instruções executadas quando o gatilho é invocado.

Se o corpo do gatilho tiver múltiplas instruções, você precisará usar o BEGIN ENDbloco e alterar o delimitador padrão :

DELIMITER $$

CREATE TRIGGER trigger_name
    AFTER INSERT
    ON table_name FOR EACH ROW
BEGIN
    -- statements
END$$    

DELIMITER ;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Em um AFTER INSERTgatilho, você pode acessar os NEWvalores, mas não pode alterá-los. Além disso, você não pode acessar os OLDvalores porque não há gatilhos OLDon INSERT.

MySQL APÓS INSERT Trigger

Exemplo de gatilho MySQL AFTER INSERT

Considere o seguinte AFTER INSERTexemplo de gatilho.

Configurando uma tabela de exemplo

Primeiro, crie uma nova tabela chamada members:

DROP TABLE IF EXISTS members;

CREATE TABLE members (
    id INT AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255),
    birthDate DATE,
    PRIMARY KEY (id)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, crie outra tabela chamada remindersque armazena mensagens de lembrete para os membros.

DROP TABLE IF EXISTS reminders;

CREATE TABLE reminders (
    id INT AUTO_INCREMENT,
    memberId INT,
    message VARCHAR(255) NOT NULL,
    PRIMARY KEY (id,memberId)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Criando exemplo de gatilho AFTER INSERT

A instrução a seguir cria um AFTER INSERTgatilho que insere um lembrete na reminderstabela se a data de nascimento do membro for NULL.

DELIMITER $$

CREATE TRIGGER after_members_insert
AFTER INSERT
ON members FOR EACH ROW
BEGIN
    IF NEW.birthDate IS NULL THEN
        INSERT INTO reminders(memberId, message)
        VALUES(new.id,CONCAT('Hi ', NEW.name, ', please update your date of birth.'));
    END IF;
END$$

DELIMITER ;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste gatilho:

Primeiro, especifique o nome do gatilho after_members_insertna CREATE TRIGGERcláusula:

CREATE TRIGGER after_members_insertLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Em segundo lugar, defina o evento desencadeador:

AFTER INSERTLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, especifique a tabela membersà qual o gatilho está associado:

ON members FOR EACH ROWLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por fim, dentro do corpo do gatilho, insira uma nova linha na reminderstabela se a data de nascimento do membro for NULL.

Testando o gatilho MySQL AFTER INSERT

Primeiro, insira duas linhas na memberstabela:

INSERT INTO members(name, email, birthDate)
VALUES
    ('John Doe', '[email protected]', NULL),
    ('Jane Doe', '[email protected]','2000-01-01');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, consulte os dados da memberstabela:

SELECT * FROM members;    Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo de gatilho MySQL AFTER INSERT

Terceiro, consulte os dados da reminderstabela:

SELECT * FROM reminders;    Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL AFTER INSERT Trigger Output

Inserimos duas linhas na memberstabela. Porém, apenas a primeira linha possui valor de data de nascimento NULL, portanto, a trigger inseriu apenas uma linha na reminderstabela.

Neste tutorial, você aprendeu como criar um AFTER INSERTgatilho MySQL para inserir dados em uma tabela após inserir dados em outra tabela.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *