Latest web development tutorials

SQLite Gatilho

gatilho de banco de dados SQLite é uma função de chamada de retorno, ele irá executar automaticamente quando o / evento de banco de dados especificado chamada ocorre. A seguir estão os principais pontos sobre o SQLite gatilho: SQLitegatilho (trigger) é a função de retorno do banco de dados, ele irá executar automaticamente / call quando um evento de banco de dados especificado ocorre.A seguir estão os principais pontos sobre gatilhos SQLite (trigger) de:

  • gatilhos SQLite gatilhos (trigger) pode ser especificado no momento da ocorrência de um banco de dados tabelas específicas DELETE, INSERT ou UPDATE, ou desencadeada quando uma ou mais colunas especificadas de uma atualização de tabela ocorre.

  • SQLite suporta apenas para cada gatilhos de linha (trigger), não para cada gatilhos de instrução (trigger). Portanto, especifique explicitamente para cada ROW é opcional.

  • QUANDO (Trigger) ação cláusula e o gatilho pode ser acessado através de um formuláriocom nome NEW.column e OLD.column-namereferencia inseridos, eliminados ou elementos de linha atualizada, nome da coluna está associada com o gatilho das colunas da tabela nome.

  • QUANDO cláusula, se fornecido, é verdade apenas para a cláusula WHEN especifica as linhas para executar instruções SQL. Se nenhuma cláusula WHEN é executado instruções SQL para todas as linhas.

  • Após a execução da acção gatilho ANTES ou DEPOIS palavra-chave determina quando a ação gatilho, é inserida a decisão nas linhas associadas, ou antes de excluir ou modificar.

  • Quando a tabela associada com o disparador excluído excluir automaticamente gatilho (trigger).

  • Para modificar a tabela deve existir no mesmo banco de dados como o gatilho é anexado tabelas ou exibições, e deve usar apenas onome da tabela, em vez database.tablename.

  • Uma função especial AUMENTO SQL () pode ser usada para desencadear uma excepção dentro do programa.

gramática

Criar umgatilho (trigger) A sintaxe básica é a seguinte:

CREATE TRIGGER trigger_name [ANTES | DEPOIS] event_name 
ON table_name
BEGIN
 - Lógica de disparo vai aqui ....
END;

Aqui, event_name pode ser mencionado na tabela nome_da_tabeladeINSERT, DELETE e asoperações de banco de dados UPDATE. Opcionalmente, você pode especificar, para cada linha após o nome da tabela.

O seguinte são especificados na operação UPDATE em uma ou mais tabelas nas colunas criar um gatilho (Trigger) sintaxe:

CREATE TRIGGER trigger_name [ANTES | DEPOIS] ATUALIZAÇÃO DE column_name 
ON table_name
BEGIN
 - Lógica de disparo vai aqui ....
END;

Exemplos

Vamos supor uma situação em que queremos ser inseridos na tabela empresa recentemente criada (se ele já existe, exclua o re-criado) em cada um dos testes de auditoria de manutenção de registros:

sqlite> CREATE TABLE COMPANY (
   ID INT PRIMARY KEY NOT NULL,
   TEXT NAME NOT NULL,
   AGE INT NOT NULL,
   CHAR ADDRESS (50),
   salário real
);

A fim de manter ensaios de auditoria, vamos criar uma nova tabela chamada AUDIT. Sempre tabela empresa tem uma nova entrada de registro, será inserida a mensagem de log:

sqlite> CREATE TABLE AUDIT (
    EMP_ID INT NOT NULL,
    ENTRY_DATE texto não NULL
);

Aqui, ID é AUDITORIA ID de registro, EMP_ID o ID da tabela COMPANY, DATA vai manter timestamp é criado quando COMPANY é gravado. Então, agora deixe-nos criar um disparo na tabela da empresa como segue:

sqlite> CREATE TRIGGER audit_log APÓS INSERIR 
SOBRE EMPRESA
BEGIN
   INSERT INTO AUDIT (EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime ( "agora"));
END;

Vamos agora começar a inserir um registro na tabela de empresa, isso vai levar à criação de uma tabela de auditoria log de auditoria. Então, vamos criar um registro na tabela da Companhia, conforme segue:

sqlite> INSERT INTO COMPANY (ID, nome, idade, endereço, SALÁRIO)
VALUES (1, 'Paul', 32 'California', 20.000,00);

Isto irá criar um registro na seguinte tabela EMPRESA:

ID NOME SALÁRIO IDADE ENDEREÇO
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20.000,0

Ao mesmo tempo, vamos criar um registro na tabela de auditoria. Este registro é o resultado de um gatilho, que é o gatilho que operações INSERT em tabelas criado COMPANY (trigger). Da mesma forma, pode criar gatilhos das operações UPDATE e DELETE (trigger).

EMP_ID ENTRY_DATE
---------- -------------------
12013-04-05 06:26:00

Listas de disparo (triggers)

Você pode listar todos os gatilhos da tabelasqlite_master, como segue:

sqlite> SELECT nome FROM sqlite_master
ONDE type = 'gatilho';

A declaração SQLite acima lista somente uma entrada, como segue:

nome
----------
audit_log

Se você deseja listar o gatilho em uma tabela específica, use a cláusula AND para unir tabelas foram os seguintes:

sqlite> SELECT nome FROM sqlite_master
ONDE type = 'gatilho' E tbl_name = "Empresa";

A declaração SQLite acima lista somente uma entrada, como segue:

nome
----------
audit_log

Remover o gatilho (triggers)

O seguinte é um comando DROP pode ser usado para remover o gatilho existente:

sqlite> DROP TRIGGER trigger_name;