Gatilho de criação do MySQL

Resumo : neste tutorial, você aprenderá como usar a CREATE TRIGGERinstrução MySQL para criar um gatilho associado a uma tabela.

Introdução à instrução MySQL CREATE TRIGGER

Um gatilho é um conjunto de instruções SQL executadas automaticamente em resposta a um evento especificado, incluindo INSERT, UPDATEou DELETEem uma tabela específica.

A CREATE TRIGGERinstrução permite criar um novo gatilho associado a uma tabela.

Aqui está a sintaxe da CREATE TRIGGERinstrução:

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN
    -- Trigger body (SQL statements)
END;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • trigger_name: Nome do gatilho.
  • BEFOREou AFTER: Especifica quando o gatilho deve ser executado.
  • INSERT, UPDATE, ou DELETE: especifica o tipo de operação que ativa o gatilho.
  • table_name: Nome da tabela na qual o gatilho está definido.
  • FOR EACH ROW: indica que o gatilho deve ser executado uma vez para cada linha afetada pelo evento de gatilho.
  • BEGINe END: delimita o corpo do trigger, onde você define as instruções SQL a serem executadas.

O corpo do gatilho pode acessar os valores da coluna afetada pela operação.

Para distinguir entre o valor das colunas BEFOREe AFTERo evento foi disparado, você usa os modificadores NEWe .OLD

Por exemplo, se você atualizar o valor na descriptioncoluna, no corpo do gatilho, poderá acessar o valor da descriptioncoluna antes da atualização OLD.descriptione o novo valor NEW.description.

A tabela a seguir ilustra a disponibilidade dos modificadores OLDe NEW:

Evento de gatilho OLD NEW
INSERT Não Sim
UPDATE Sim Sim
DELETE Sim Não

Exemplo de gatilho MySQL

Primeiro, crie uma nova tabela chamada items:

CREATE TABLE items (
    id INT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL
);
Linguagem de código:  PHP  ( php )

Segundo, insira uma linha na itemstabela:

INSERT INTO items(id, name, price) 
VALUES (1, 'Item', 50.00);Linguagem de código:  JavaScript  ( javascript )

Terceiro, crie a item_changestabela para armazenar as alterações feitas nos dados da itemstabela:

CREATE TABLE item_changes (
    change_id INT PRIMARY KEY AUTO_INCREMENT,
    item_id INT,
    change_type VARCHAR(10),
    change_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (item_id) REFERENCES items(id)
);Linguagem de código:  PHP  ( php )

Quarto, crie um gatilho chamado update_items_triggerassociado à itemstabela:

DELIMITER //

CREATE TRIGGER update_items_trigger
AFTER UPDATE
ON items
FOR EACH ROW
BEGIN
    INSERT INTO item_changes (item_id, change_type)
    VALUES (NEW.id, 'UPDATE');
END;
//

DELIMITER ;Linguagem de código:  PHP  ( php )

Neste exemplo:

  • O gatilho é nomeado update_items_trigger.
  • Está configurado para ser executado AFTER UPDATEna itemsmesa.
  • O corpo do gatilho insere um registro na item_changestabela com os item_idcaracteres e change_type.

Agora, sempre que você atualizar uma linha na itemstabela, o gatilho será executado para adicionar o registro correspondente à item_changestabela.

Quinto, atualize uma linha na itemstabela:

UPDATE items
SET price = 60.00 
WHERE id = 1;

Por fim, recupere os dados da item_changestabela para ver as alterações registradas:

SELECT * FROM item_changes;

Saída:

+-----------+---------+-------------+---------------------+
| change_id | item_id | change_type | change_timestamp    |
+-----------+---------+-------------+---------------------+
|         1 |       1 | UPDATE      | 2023-12-27 18:21:43 |
+-----------+---------+-------------+---------------------+
1 row in set (0.01 sec)Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use a CREATE TRIGGERinstrução MySQL para criar um novo gatilho no banco de dados.

Deixe um comentário

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