Partilhar via


Compreendendo os gatilhos DML

O MicrosoftSQL Server fornece dois mecanismos primários para fazer cumprir as regras empresariais e a integridade dos dados: restrições e gatilhos. Um gatilho é um tipo especial de procedimento armazenado que automaticamente entra em funcionamento quando um evento de linguagem é executado. O SQL Server inclui três tipos gerais de gatilhos: gatilhos DML, disparadores DDL, e gatilhos de logon.

São invocados disparadores DDL quando um evento de linguagem de definição de dados (DDL) ocorre no servidor ou no banco de dados. Eles se encontram detalhados em Gatilhos DDL. Os gatilhos de logon acionam procedimentos armazenados, em resposta a um evento LOGON. Esse evento ocorre quando uma sessão de usuário é estabelecida com uma instância do SQL Server. Para obter mais informações, consulte Gatilhos e logon.

São invocados gatilhos DML, quando ocorre um evento de manipulação de definição de dados (DML) no banco de dados. Eventos DML incluem instruções INSERT, UPDATE ou DELETE, que modificam os dados em uma tabela especificada ou exibição. Um gatilho DML pode examinar outras tabelas e incluir instruções Transact-SQL complexas. O gatilho e a instrução acionados são tratados como uma transação simples, que pode ser revertida dentro do gatilho. Se um erro grave for detectado (espaço em disco insuficiente, por exemplo), toda a transação será revertida automaticamente.

Os gatilhos DML são úteis destas maneiras:

  • Podem colocar em cascata as alterações pelas tabelas relacionadas no banco de dados; no entanto, essas alterações podem ser executadas com mais eficiência com o uso das restrições de integridade referencial em cascata.

  • Podem proteger contra operações mal intencionadas ou incorretas do tipo INSERT, UPDATE, e DELETE, e fazer cumprir as outras restrições mais complexas do que aquelas definidas nas restrições CHECK.

    Diferentemente das restrições CHECK, os gatilhos DML podem fazer referência a colunas em outras tabelas. Por exemplo, um gatilho pode usar um SELECT de outra tabela para comparar com os dados atualizados ou inseridos e para efetuar ações adicionais, como modificar os dados ou exibir uma mensagem de erro definida pelo usuário.

  • Podem avaliar o estado de uma tabela antes e depois da modificação dos dados e efetuar ações com base nessa diferença.

  • Vários gatilhos DML do mesmo tipo (INSERT, UPDATE, ou DELETE), em uma tabela, permitem que múltiplas ações diferentes ocorram em resposta à mesma instrução de modificação.