Aprendendo o mariadb gatilhos

Aprendendo o mariadb gatilhos

Como usar gatilhos em mariadb

Um gatilho é um procedimento que é disparado automaticamente quando qualquer modificação é feita em uma tabela de banco de dados. Não há opção para ligar ou executar qualquer gatilho manualmente. O principal objetivo do uso de gatilhos é manter a integridade do banco de dados e pode ser usada com as restrições de integridade referencial que força regras de integridade. Em um DBMS, quando qualquer evento de inserção, atualização e exclusão ocorre, acione o procedimento associado à tabela efetiva será executada automaticamente e executará as ações necessárias. Diferentes tipos de gatilhos são suportados pelo banco de dados. Os gatilhos são categorizados principalmente de duas maneiras. Um é antes do gatilho e outro depois do gatilho. Antes que os gatilhos sejam chamados antes que qualquer evento seja executado na tabela e depois que os gatilhos são chamados após a execução de qualquer evento na tabela. Como você instala o mariadb e aplica diferentes tipos de gatilhos no servidor de banco de dados MariaDB no Ubuntu é mostrado neste tutorial.

MariaDB Instalação:

Execute o comando abaixo para atualizar o sistema e instalar o servidor e o cliente Mariadb.

# sudo apt-get update && sudo apt-get install mariadb-server mariadb-client

Tipo 'você e pressione Enter para concluir o processo de instalação.

Execute o seguinte comando para iniciar o servidor mariadb.

# sudo systemctl start mariadb

Verifique se o servidor está funcionando corretamente ou não. A saída do comando a seguir mostrará os detalhes do status do servidor. A saída indica que Mariadb 10.1.30 Verion está funcionando.

# sudo Systemctl Status Mariadb

Execute o seguinte comando se quiser parar o servidor. Não execute este comando agora.

# sudo systemctl pare mariadb

Configure o banco de dados e as tabelas

Você precisa criar um banco de dados e duas ou mais tabelas para verificar como os gatilhos funcionam. Primeiro de tudo, execute o cliente MySQL para configurar o banco de dados. Ele solicitará a senha raiz para acessar o servidor de banco de dados.

# sudo mysql -u root

Crie um banco de dados nomeado loja.

> Criar armazenamento de banco de dados;

Selecione este novo banco de dados:

> Use Store;

Crie três mesas em loja banco de dados para aplicar ações de gatilho neles. Aqui, Produtos, Stock e Stock_Add Tabelas são criadas.

Crie produtos de tabela
(id int (11),
Nome Varchar (30) não nulo,
Preço Int (11),
Chave primária (id)
);
Crie estoques de tabela
(product_id int (11),
abertura_stock int (11),
current_stock int (11),
Chave primária (product_id)
);
Crie tabela stocks_add
(product_id int (11),
Data de entrada_date,
Quantidade int (11),
Chave primária (Product_id, Entry_date)
);

Agora, insira alguns dados nessas três tabelas.

Produtos:

Insira nos produtos Set ID = 101, name = "Bag", Preço = 1000;
Insira nos produtos Set ID = 102, name = "Pen", Price = 100;
Insira nos produtos Set ID = 103, name = "lápis", preço = 50;

ações:

Inserir em estoques set product_id = 101, abertura_stock = 200, current_stock = 100;
Inserir em estoques set product_id = 102, abertura_stock = 230, current_stock = 150;
Inserir em estoques set product_id = 103, abertura_stock = 220, current_stock = 300;

stocks_add:

Inserir em stocks_add set product_id = 103, entrada_date = "2018-01-01", quantidade = 30;
Inserir em stocks_add set product_id = 103, entrada_date = "2018-01-02", quantidade = 50;
Inserir em stocks_add set product_id = 103, entrada_date = "2018-01-03", quantidade = 45;

Crie após o gatilho

Você pode criar após o gatilho para executar qualquer ação automaticamente após a inserção ou atualização ou exclusão de registros de uma tabela específica. Aqui, produtos e ações As tabelas são selecionadas para criar após excluir o gatilho. Os dados da tabela de estoque depende dos dados da tabela de produtos. Portanto, se algum registro for removido da tabela de produtos, os registros relacionados de ações precisarão ser removidos. Crie o seguinte procedimento de gatilho para excluir qualquer registro relacionado da tabela de ações automaticamente quando qualquer registro for removido da tabela de produtos. Neste gatilho, o ID excluído é reconhecido por velho.eu ia.

Delimitador //
Crie Produtos Trigger_after_delete
Depois de excluir
Em produtos para cada linha
COMEÇAR
Exclua das ações onde product_id = antigo.eu ia;
FIM;
//


Depois que o gatilho é criado para a tabela de produtos. Agora você tem que testar que o gatilho está funcionando corretamente ou não. Execute a consulta a seguir para remover um registro de produtos onde eu ia é 101 e verifique os dados de tabelas de produtos e ações. Depois de executar a consulta, você encontrará que o registro relacionado da tabela de estoque é removido após o gatilho. Nenhum registro para valor de identificação, 101, será encontrado em ambas as tabelas.

> excluir dos produtos onde id = 101;
> selecionar * FROM PRODUTOS;
> Selecionar * de ações;

Crie antes dos gatilhos

Antes de o gatilho ser usado para tomar qualquer ação antes de inserir ou atualizar ou excluir qualquer ou mais registros de uma tabela específica. Aqui, ações e stocks_add A tabela é usada para criar antes do gatilho. O valor da tabela Current_stock of Stocks depende do valor de quantidade da tabela Stocks_Add. Se você atualizar algum valor de quantidade da tabela Stocks_Add, então a tabela current_stock of Stocks precisará ser atualizada. Portanto, se algum valor de quantidade existente da tabela Stocks_Add diminuir, o current_stock de estoques será reduzido e se o valor da quantidade aumentar, o current_stock será aumentado. Crie antes do gatilho da atualização para a tabela Stocks_Add. Nesse gatilho, o valor da quantidade alterada é calculada subtraindo a quantidade antiga da nova quantidade.

Delimitador //
Crie gatilho de gatilho_before_update
Antes da atualização
Em Stocks_add para cada linha
COMEÇAR
Atualizar ações Set.quantidade antiga.quantidade)
Onde product_id = antigo.ID do produto;
FIM;
//

Antes de atualizar, verifique os valores atuais de ações e tabelas estoques_add.

> Selecionar * de ações;
> Selecione * em Stocks_add;


Suponha que você precise atualizar o valor de quantidade da tabela Stocks_Add onde ID do produto é 103 e data de entrada é 2018-01-01 qual é 30 agora. Se você quiser atualizar o valor por 75 Em seguida, execute a seguinte consulta de atualização e verifique as duas tabelas novamente. O aumento da quantidade é, 75-30 = 45. Portanto, após a atualização, o gatilho será disparado e a tabela current_stock of Stocks será definida como, 300+45 = 345.

Atualizar estoques_add Definir quantidade = 75 onde product_id = 103 e entrada_date = "2018-01-01";
> Selecionar * de ações;
> Selecione * em Stocks_add;

O uso de dois tipos de gatilhos é mostrado neste tutorial. De maneira semelhante, você pode criar outros tipos de antes e depois do gatilho para suas tabelas de banco de dados com base em seus requisitos.