Resumo : neste tutorial, você aprenderá como usar a CREATE TRIGGER
instruçã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
, UPDATE
ou DELETE
em uma tabela específica.
A CREATE TRIGGER
instrução permite criar um novo gatilho associado a uma tabela.
Aqui está a sintaxe da CREATE TRIGGER
instruçã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.BEFORE
ouAFTER
: Especifica quando o gatilho deve ser executado.INSERT
,UPDATE
, ouDELETE
: 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.BEGIN
eEND
: 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 BEFORE
e AFTER
o evento foi disparado, você usa os modificadores NEW
e .OLD
Por exemplo, se você atualizar o valor na description
coluna, no corpo do gatilho, poderá acessar o valor da description
coluna antes da atualização OLD.description
e o novo valor NEW.description
.
A tabela a seguir ilustra a disponibilidade dos modificadores OLD
e 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 items
tabela:
INSERT INTO items(id, name, price)
VALUES (1, 'Item', 50.00);
Linguagem de código: JavaScript ( javascript )
Terceiro, crie a item_changes
tabela para armazenar as alterações feitas nos dados da items
tabela:
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_trigger
associado à items
tabela:
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 UPDATE
naitems
mesa. - O corpo do gatilho insere um registro na
item_changes
tabela com ositem_id
caracteres echange_type
.
Agora, sempre que você atualizar uma linha na items
tabela, o gatilho será executado para adicionar o registro correspondente à item_changes
tabela.
Quinto, atualize uma linha na items
tabela:
UPDATE items
SET price = 60.00
WHERE id = 1;
Por fim, recupere os dados da item_changes
tabela 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 TRIGGER
instrução MySQL para criar um novo gatilho no banco de dados.