Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando acionadores do MySQL


Este artigo descreve como criar e usar gatilhos MySQL em sua conta de hospedagem A2. Triggers são regras predefinidas associadas a uma tabela. Eles podem ser chamados ("acionados") antes ou depois de uma instrução SQL inserir, atualizar ou excluir dados da tabela associada.

Você pode usar gatilhos em uma ampla variedade de cenários. Por exemplo, você pode usar um gatilho para alterar automaticamente determinados valores quando uma linha é atualizada. Ou você pode especificar um conjunto de ações a serem executadas sempre que uma linha for excluída. As possibilidades são quase infinitas.

Criando e usando acionadores


Você pode criar e usar gatilhos em qualquer servidor A2 Hosting que use MySQL.
Configurando um banco de dados de teste

Para demonstrar um exemplo básico de um gatilho em ação, vamos começar criando um banco de dados para fins de teste. Na instrução SQL a seguir, substitua username com o nome de usuário da sua conta:
CREATE DATABASE username_test;
Você pode executar o comando SQL anterior (e os comandos SQL a seguir) na linha de comando usando a ferramenta MySQL ou em seu navegador da Web usando o phpMyAdmin.
Se você estiver usando o phpMyAdmin, clique no nome username _test para selecionar o banco de dados. Caso contrário, se você estiver usando o programa de linha de comando mysql, digite a seguinte instrução SQL:
USE username_test;

Em seguida, crie uma tabela no nome de usuário _teste banco de dados chamado produtos . Para fazer isso, execute a seguinte instrução SQL:
CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

A instrução SQL a seguir adiciona alguns dados de amostra aos produtos tabela:
INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);

Agora estamos prontos para criar um gatilho para nossa tabela!
Criando o gatilho

Vamos criar um gatilho chamado updateProductPrice . Esse acionador específico é ativado sempre que os produtos tabela é atualizada. Quando esse evento ocorre, o acionador verifica cada linha para ver se o custo do produto (prod_cost ) o valor está sendo alterado. Se for, o acionador definirá automaticamente o novo preço do item (prod_price ) para 1,40 vezes o novo custo do item (em outras palavras, uma marcação de 40%).

Para criar esse gatilho, execute as seguintes instruções MySQL:
DELIMITER $$
CREATE TRIGGER `updateProductPrice`
BEFORE UPDATE ON `products`
FOR EACH ROW
BEGIN
  IF NEW.prod_cost <> OLD.prod_cost
    THEN
      SET NEW.prod_price = NEW.prod_cost * 1.40;
  END IF ;
END$$
DELIMITER ;
O DELIMITADOR O comando no início dessas instruções impede o MySQL de processar a definição do gatilho muito cedo. O DELIMITADOR comando no final dessas instruções retorna o processamento ao normal.
Usando o gatilho

O updateProductPrice o gatilho agora está pronto para ser invocado automaticamente sempre que uma linha nos produtos tabela é atualizada. Por exemplo, execute a seguinte instrução SQL para alterar o custo do widget básico:
UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Quando você executa essa instrução SQL, o gatilho também é ativado e atualiza automaticamente o preço do Widget Básico proporcionalmente ao novo custo. Para verificar isso, você pode executar a seguinte instrução SQL:
SELECT * FROM products;

Essa instrução retorna os seguintes resultados:
+---------+--------------+-----------+------------+
| prod_id | prod_name    | prod_cost | prod_price |
+---------+--------------+-----------+------------+
|       1 | Basic Widget |         7 |        9.8 |
|       2 | Micro Widget |      0.95 |       1.35 |
|       3 | Mega Widget  |     99.95 |        140 |
+---------+--------------+-----------+------------+
3 rows in set (0.00 sec)

Como você pode ver, o updateProductPrice trigger atualizou automaticamente o preço do Basic Widget (9,80) com base no novo custo (7,00). Embora este seja um exemplo simples do que um gatilho pode fazer, você pode usar as mesmas técnicas em seus próprios bancos de dados — as possibilidades são quase infinitas.

Mais informações

  • Para obter mais informações sobre acionadores do MySQL, visite http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • Para obter mais informações sobre o CRIAR TRIGGER declaração, visite http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.