Trigger, vantagens e desvantagens de seu uso
Artigo: Trigger, vantagens e desvantagens de seu uso. Pesquise 862.000+ trabalhos acadêmicosPor: douglas.dayan • 9/10/2014 • Artigo • 432 Palavras (2 Páginas) • 3.290 Visualizações
1)
Trigger (gatilho) é um recurso de programação executado sempre que o evento associado ocorrer. É um tipo especial de procedimento armazenado, que é executado sempre que há uma tentativa de modificar os dados de uma tabela que é protegida por ele. É utilizada para manter a consistência dos dados ou para propagar alterações em um determinado dado de uma tabela para outras.
Em SQL, para se criar um trigger utiliza-se do CREATE TRIGGER, e para removê-lo deve-se usar DROP TRIGGER. Um gatilho típico é composto de três componentes: evento - condição – ação.
Exemplo 1:
DELIMITER $$
CREATE TRIGGER antesDeUpdate_empregados
BEFORE UPDATE ON empregados
FOR EACH ROW BEGIN
INSERT INTO empregados_auditoria
SET acao = 'update',
id_empregado = OLD.id_empregado,
sobrenome = OLD.sobrenome,
modificadoem = NOW(); END$$
DELIMITER ;
Exemplo 2:
CREATE TRIGGER TGR_VENDAS_AI
ON VENDAS
FOR INSERT
AS
BEGIN
DECLARE
@VALOR DECIMAL(10,2),
@DATA DATETIME
SELECT @DATA = DATA, @VALOR = VALOR FROM INSERTED
UPDATE CAIXA SET SALDO_FINAL = SALDO_FINAL + @VALOR
WHERE DATA = @DATA
END
GO
2)
3)
Vantagens da utilização do trigger
o Fornece uma forma alternativa para verificar a integridade da sua base de dados.
o Fornece uma forma alternativa de executar tarefas agendadas. Com trigger, você não tem que esperar para executar as tarefas agendadas. Você pode lidar com as tarefas antes ou após as alterações feitas para tabelas de banco de dados.
Desvantagens do uso do trigger
o Pode apenas fornecer validação estendida e não pode substituir todas as validações. Algumas validações simples pode ser feito em nível de aplicativo. Por exemplo, você pode validar verificar a entrada no lado cliente usando JavaScript ou no lado do servidor pelo script de servidor utilizando PHP ou ASP.NET.
o Triggers SQL executa invisível da aplicação cliente que se conecta ao servidor de banco de dados assim que é difícil descobrir o que aconteceu camada de banco de dados subjacente.
4)
-- Exclui a trigger caso ela já exista.
If Object_id ('TR_IN_ITEM','TR') Is Not Null
...