Implementação de gatilhos MySQL

Resumo : neste tutorial, você aprenderá sobre a implementação de gatilhos MySQL . Além disso, mostraremos como o MySQL armazena os gatilhos e as limitações dos gatilhos no MySQL.

Introdução aos gatilhos MySQL

No MySQL, um gatilho é um conjunto de instruções SQL invocadas automaticamente quando uma alteração é feita nos dados da tabela associada. Um gatilho pode ser definido para ser invocado antes ou depois dos dados serem alterados pelas instruções INSERT , UPDATE ou DELETE . Antes do MySQL versão 5.7.2, você pode definir no máximo seis gatilhos para cada tabela.

  • BEFORE INSERT– ativado antes que os dados sejam inseridos na tabela.
  • AFTER INSERT– ativado após os dados serem inseridos na tabela.
  • BEFORE UPDATE– ativado antes que os dados da tabela sejam atualizados.
  • AFTER UPDATE– ativado após a atualização dos dados da tabela.
  • BEFORE DELETE– ativado antes que os dados sejam removidos da tabela.
  • AFTER DELETE– ativado após a remoção dos dados da tabela.

No entanto, a partir do MySQL versão 5.7.2+, você pode definir vários gatilhos para o mesmo evento de gatilho e tempo de ação .

Quando você usa uma instrução que não usa INSERTou DELETEuma UPDATEinstrução para alterar dados em uma tabela, os gatilhos associados à tabela não são invocados. Por exemplo, a instrução TRUNCATE remove todos os dados de uma tabela, mas não invoca o gatilho associado a essa tabela.

Existem algumas instruções que usam a INSERTinstrução nos bastidores, como a instrução REPLACE  ou  a instrução LOAD DATA . Se você usar essas instruções, os gatilhos correspondentes associados à tabela serão invocados.

Você deve usar um nome exclusivo para cada gatilho associado a uma tabela. No entanto, você pode ter o mesmo nome de gatilho definido para tabelas diferentes, embora seja uma boa prática.

Você deve nomear os gatilhos usando a seguinte convenção de nomenclatura:

(BEFORE | AFTER)_tableName_(INSERT| UPDATE | DELETE)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por exemplo, before_order_updateé um gatilho invocado antes que uma linha da ordertabela seja atualizada.

A convenção de nomenclatura a seguir é tão boa quanto a anterior.

tablename_(BEFORE | AFTER)_(INSERT| UPDATE | DELETE)
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por exemplo, order_before_updateé igual ao before_order_updategatilho acima.

MySQL aciona armazenamento

O MySQL armazena triggers em um diretório de dados, por exemplo, /data/classicmodels/com os arquivos nomeados tablename.TRGe triggername.TRN:

  • O tablename.TRGarquivo mapeia o gatilho para a tabela correspondente.
  • o triggername.TRNarquivo contém a definição do gatilho.

Você pode fazer backup dos gatilhos do MySQL copiando os arquivos do gatilho para a pasta de backup. Você também pode fazer backup dos gatilhos usando a ferramenta mysqldump .

Limitações do gatilho MySQL

Os gatilhos MySQL cobrem todos os recursos definidos no SQL padrão. No entanto, existem algumas limitações que você deve conhecer antes de usá-las em seus aplicativos.

Os gatilhos do MySQL não podem:

A partir da versão 5.1.4 do MySQL, um gatilho pode chamar um procedimento armazenado ou função armazenada , o que era uma limitação nas versões anteriores.

Neste tutorial, mostramos como os gatilhos são implementados no MySQL. Também discutimos o armazenamento do gatilho, bem como as limitações do gatilho no MySQL.

Deixe um comentário

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