PhpMyAdmin - funções e gatilhos

Índice

As funções são muito semelhantes a Procedimentos Armazenados (SP), a diferença está em alguns detalhes, sendo o principal que eles retornam apenas um valor, quando um SP pode retornar mais de um, além disso não precisamos de uma variável para armazenar o valor resultante, por isso é muito mais fácil de usar dentro de um SELECT .

Criação de uma funçãoO objetivo de uma função é isolar a lógica de certos elementos para que sejam mais fáceis de usar, desta forma podemos documentar o banco de dados e seu funcionamento e poder simplificar as ações da aplicação que poderiam estar se comunicando com a base de dados. Para criar uma função, usaremos os seguintes elementos:

  • O Caixa de Consulta, onde podemos escrever a função.
  • A mudança do delimitador.
  • O mecanismo de edição e manipulação da função.

Vamos ver como definir uma função por meio de um exemplo:

 CREATE FUNCTION get_country_name (param_country_code CHAR (2)) RETURNS VARCHAR (50) READS SQL DATA BEGIN DECLARE var_country_name VARCHAR (50) DEFAULT 'não encontrado'; SELECT descrição FROM país WHERE code = param_country_code INTO var_country_name; RETURN var_country_name; FIM // 
Como podemos ver, a sintaxe é muito semelhante à do SP, só aqui não definimos os valores de EM Y FORA caso contrário, definimos os parâmetros que eles inserem e declaramos um único valor que será o RETORNA.
Quando vamos para a seção de Rotinas Na página de estrutura do Banco de Dados, veremos isso refletido da seguinte forma:

Depois de criarmos nossa função, vamos ver como podemos testá-la, essa função que usamos como teste o que ela faz é consultar uma tabela de países e retornar o nome de um país quando pedimos um código, no caso de não encontrando, ele nos retorna não encontrado:

 SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) como teste; 
Simplesmente fazemos um select com um CONCAT para juntar os resultados em uma string e obteremos o seguinte:
 ca-> Canadá, zz-> não encontrado
Como podemos ver, é muito mais fácil do que construir as consultas que cada país consultará separadamente.

GatilhosO Gatilhos são diferentes das funções e Procedimentos armazenadosEstas não precisam ser chamadas pelo usuário, elas ocorrerão quando uma ação for executada na mesa a que estão vinculadas, o que nos leva à outra diferença das funções, é que são gerais; a Gatilhos se estiverem vinculados a uma tabela específica.
Vamos ver como criar um Desencadear:

 CREATE TRIGGER after_book_insert APÓS INSERT ON book PARA CADA LINHA BEGIN UPDATE autor SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; FIM // 
Como podemos ver, também temos que definir um novo delimitador // dentro da caixa de consulta para que possamos incluir todas as instruções do Desencadear, no caso do exemplo, ligamos no Após a Inserção ou seja, após fazer uma inserção e, em seguida, executar a ação definida, isso ajuda o Banco de Dados a gerenciar de forma autônoma as ações conforme elas acontecem.

Uma vez o Desencadear Quando formos para a página de estrutura da tabela, veremos que está disponível:

wave wave wave wave wave