Como criar um gatilho sql

Você cria um disparador SQL, logicamente, com um CREATE TRIGGER

declaração. Após o gatilho é criado, ele se encontra na espera - esperando para o evento desencadeador ocorrer. Quando o fato gerador ocorre, bang! Os incêndios de gatilho.

A sintaxe para o CREATE TRIGGER declaração é bastante envolvido, mas você pode dividi-la em pedaços compreensíveis. Primeiro dê uma olhada no quadro geral:

CREATE TRIGGER trigger_nametrigger_action_timetrigger_eventON table_name [REFERENCING old_or_new_value_alias_list] triggered_action

O nome do gatilho é o identificador exclusivo para esse gatilho. O tempo de ação do gatilho é o tempo que quiser a ação do gatilho para ocorrer: ou ANTES ou DEPOIS DE o fato gerador. O fato de que uma ação desencadeada pode ocorrer antes o evento que supostamente está causando isso acontecer pode parecer um pouco bizarro, mas em alguns casos, essa capacidade pode ser muito útil.

Porque o mecanismo de banco sabe que está prestes a executar um evento de disparo antes que ele realmente executa-lo, ele tem a capacidade de sanduíche no evento disparado à frente da execução do evento de disparo, se um tempo de ação de disparo de ANTES foi especificado.

Três eventos de disparo possíveis podem causar um gatilho para o fogo: a execução de um INSERIR declaração, a EXCLUIR declaração, ou um ATUALIZAR declaração. Essas três afirmações têm o poder de alterar o conteúdo de uma tabela de banco de dados.

Assim, qualquer inserção de uma ou mais linhas de valores na tabela do sujeito, qualquer supressão de uma ou mais linhas da tabela sujeito, ou qualquer actualização de uma ou mais colunas, em uma ou mais linhas da tabela o sujeito pode causar um gatilho ao fogo. ON table_name, evidentemente, refere-se a tabela para a qual um INSERIR, EXCLUIR, ou ATUALIZAR foi especificado.

gatilhos de instrução e de linha

o triggered_action no exemplo anterior tem a seguinte sintaxe:

Video: PD - Criar Trigger Básica após Inserir no SQL Server 2012

[FOR EACH ROW] QUANDO 

Você pode especificar como o gatilho vai agir:



gatilho de linha: O gatilho será acionado uma vez em cima de encontrar o INSERIR, EXCLUIR, ou ATUALIZAR declaração que constitui o fato gerador.

  • gatilho instrução: O gatilho será acionado várias vezes, uma vez para cada linha na tabela de assunto que é afetado pelo fato gerador.

    Video: aula 2432 PL SQL Introdução a TRIGGER Gatilho

  • Tal como indicado pelos parênteses rectos, o PARA CADA cláusula é opcional. Apesar disso, o gatilho deve agir de uma maneira ou de outra. Se não PARA CADA cláusula for especificado, o comportamento padrão é PARA CADA DECLARAÇÃO.

    Quando um gatilho incêndios

    A condição de pesquisa na QUANDO cláusula permite especificar as circunstâncias em que um gatilho será acionado. Especifique um predicado, e se o predicado é verdade, o gatilho vai ao fogo se é falsa, ele não vai. Esta capacidade aumenta a utilidade de gatilhos.

    Video: MySQL - Triggers - Definição, Sintaxe e Criação - 44

    Você pode especificar que um gatilho incêndios só depois de um certo valor limite foi excedido, ou quando qualquer outra condição pode ser determinado para ser True ou False.

    A instrução SQL acionada

    A instrução SQL acionada pode ser uma única instrução SQL ou uma seqüência de instruções SQL executadas uma após a outra. No caso de uma única instrução SQL, a instrução SQL disparada é apenas uma instrução SQL comum.

    Para uma seqüência de instruções SQL, no entanto, você deve garantir atomicidade para garantir que a operação não é abortada midstream, deixando o banco de dados em um estado indesejado. Você pode fazer isso com um BEGIN-END bloco que inclui a ATOMIC palavra-chave:

    BEGIN ATOMIC {instrução SQL 1} {instrução SQL 2} ... {instrução SQL n }FIM

    Um exemplo de definição gatilho

    Suponha que o gerente de recursos humanos corporativa quer ser informado sempre que um dos gerentes regionais contrata um novo empregado. A seguir gatilho pode lidar com essa situação muito bem:

    CREATE TRIGGER newhireBEFORE INSERT ON employeeFOR CADA sendmail STATEMENTBEGIN ATOMICCALL ( `HRDirector`) INSERT INTO logtableVALUES ( `newhire`, CURRENT_USER, CURRENT_TIMESTAMP) -END-

    Sempre que uma nova linha é inserida na tabela de newhire, um e-mail está disparou para o gerente de RH com os detalhes, e o nome de logon da pessoa que faz a inserção e o tempo da inserção são registrados em uma tabela log, proporcionando uma trilha de auditoria.


    Publicações relacionadas