Neste artigo, exploraremos como criar e trabalhar com gatilhos no SQL Server.
Existem três tipos principais de gatilhos no SQL Server:
Vamos explorar esses gatilhos neste guia.
Gatilhos DML do SQL Server
Os gatilhos de linguagem de manipulação de dados ou manipulação de dados são tipo de gatilhos que disparam em resposta a uma operação de inserção, atualização e exclusão em uma tabela ou visualização. Os gatilhos da DML serão executados quando qualquer operação válida for executada, se alguma linha for afetada.
Crie DML após o gatilho
No SQL Server, você pode criar um gatilho DML usando a instrução CREATE TRIGGER.
Crie esquema de gatilho.trigger_nameVamos quebrar a sintaxe acima:
Para aprender a criar e usar um gatilho DML, vamos dar um exemplo prático.
Crie um banco de dados de amostra e insira os dados fornecidos no conjunto de consultas mostradas abaixo:
-- Crie um banco de dados de amostraDepois de termos os dados da amostra, podemos prosseguir e criar um gatilho DML para disparar sobre uma operação de atualização na tabela.
Considere o exemplo mostrado abaixo:
-- Crie a tabela para armazenar o histórico de atualizaçãoA consulta acima criará um gatilho que dispara quando executarmos uma atualização na tabela. Para testar o gatilho, podemos executar uma atualização como:
-- tabela de atualizaçãoApós a execução, podemos verificar se o gatilho funcionou selecionando as colunas na tabela ModifiedDate.
-- Verifique a tabela ModifiedDateNo SSMS, você pode ver os gatilhos em uma mesa expandindo a opção Giggers:
Criar em vez de gatilhos
O outro tipo de gatilho de DML no servidor SQL é em vez de gatilhos. Estes são tipos de gatilhos que executam em vez da instrução DML. Por exemplo, se especificarmos uma declaração de exclusão, podemos usar o em vez de gatilhos para executar antes da operação.
A sintaxe para criar um em vez de gatilho é como mostrado:
Crie esquema de gatilho.trigger_namePor exemplo, a consulta abaixo cria um gatilho que exibe uma mensagem quando uma operação de inserção é executada na tabela.
-- criar em vez de gatilhoDepois de executar a consulta acima, devemos receber uma mensagem indicando que não podemos executar uma inserção na tabela.
ErroVocê não pode inserir nesta tabela
Gatilhos SQL DDL
DDL ou linguagem de definição de dados são gatilhos que respondem a eventos ao servidor ou banco de dados em vez de uma tabela. Os gatilhos do DDL responderão a eventos como Drop, Grant, Negar, Revok, Atualizar estatísticas, criar e alterar.
Crie gatilhos DDL
A sintaxe para criar um gatilho DDL é como mostrado:
Crie Trigger Trigger_NamePodemos quebrar a sintaxe como:
A consulta de exemplo abaixo cria um gatilho DDL que dispara quando uma declaração de tabela de gota é emitida.
-- Crie o gatilho DDLDepois de executarmos um evento de gota no banco de dados, o gatilho exibirá informações de evento usando a função EventData ().
Podemos testar o gatilho:
-- gatilho de testeA consulta deve retornar informações XML sobre o evento como:
No SSMS, você pode visualizar os gatilhos expandindo os gatilhos do banco de dados sob programação em seu banco de dados de destino.
Ativar/desativar gatilhos
O SQL Server permite ativar e desativar gatilhos. Para ativar um gatilho em uma mesa, use a consulta como:
Ativar Trigger Update_trigger nas vendas;Onde update_trigger representa o nome do gatilho e as vendas representam o nome da tabela.
Você também pode ativar todos os gatilhos em uma mesa como:
Ativar gatilho tudo na tabela_name;Para ativar o gatilho do banco de dados, use a consulta:
Ativar Trigger Drop_DDL_Trigger nas vendas;Aqui, Drop_DDL_Trigger representa o nome do gatilho e as vendas representam o banco de dados.
Para ativar todos os gatilhos do banco de dados, use a consulta:
Ativar gatilho tudo nas vendas;Para desativar um gatilho de tabela ou banco de dados, substitua a palavra -chave Ativar por desativar ☺️.
Excluir gatilho
Para remover um gatilho, você pode usar a instrução DROP como mostrado:
Soltar o gatilho se existe trigger_name;O servidor SQL mostra todos os gatilhos
Para visualizar todos os gatilhos em uma instância do SQL Server, use a consulta como mostrado:
Selecione o nome, type_desc, is_disabled, is_instead_of_trigger do SYS.gatilhos onde tipo = 'tr'A consulta deve retornar todos os gatilhos na instância do SQL Server como:
Gatilhos de logon do SQL Server
Os gatilhos de logon são tipos de gatilhos que executam quando uma atividade de login ocorre no servidor. Esses tipos de gatilhos são executados após a autenticação bem -sucedida, mas antes de criar uma sessão de usuário. Como eles são usados para lidar com a atividade de login, criamos -os no nível do servidor, conforme mostrado no exemplo abaixo:
CUIDADO: O gatilho abaixo pode impedir futuros logins no servidor. Certifique -se de excluir antes de fazer o login.
CUIDADO - ☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️.
-- Crie gatilho de logonO gatilho exibirá uma mensagem quando o usuário fizer login no servidor.
Conclusão
Neste guia, você entendeu vários tipos de gatilhos, como criar, ativar, desativar, excluir e visualizar gatilhos no servidor SQL.