triggers sq l server

12

Upload: thiago

Post on 18-Dec-2015

251 views

Category:

Documents


4 download

DESCRIPTION

Trigguers SQL

TRANSCRIPT

  • As Triggers tambm conhecidas como gatilhos ou disparadores. So cdigos de SQL armazenados dentro do

    banco de dados, onde podemos definir um "bloco" SQL para

    que seja executado automaticamente pelo banco.

    Ao contrrio dos procedimentos armazenados do sistema, os

    disparadores no podem ser chamados diretamente e no

    passam nem aceitam parmetros.

  • Fornece uma forma alternativa para verificar a integridade

    da sua base de dados.

    O trigger pode pegar os erros de lgica de negcio no nvel de banco de dados.

    Fornece uma forma alternativa de executar tarefas

    agendadas. Com trigger, voc no tem que esperar para executar as tarefas agendadas. Voc pode lidar com as

    tarefas antes ou aps as alteraes feitas para tabelas de

    banco de dados.

    O trigger muito til quando voc us-lo para auditar as

    alteraes de dados em uma tabela do banco de dados.

  • O trigger pode apenas fornecer validao estendida e no

    pode substituir todas as validaes. Algumas validaes

    simples pode ser feito em nvel de aplicativo.

    Triggers SQL executa invisvel da aplicao cliente que se

    conecta ao servidor de banco de dados.

    O trigger executa todas as atualizaes feitas na tabela, portanto, ele adiciona a carga de trabalho para o banco de

    dados e sistema de causa corre mais devagar.

  • No se pode chamar diretamente uma Trigger com CALL,

    como se faz com um Stored e Procedures.

    No permitido iniciar ou finalizar transaes em meio Trigger.

    No se pode criar um Trigger para uma tabela temporria TEMPORARY TABLE.

    Uma Trigger ainda no pode ser implementada com a

    inteno de devolver para o usurio mensagens de erros.

  • CREATE TRIGGER [nome do trigger]

    ON [nome da tabela]

    [FOR / AFTER / ] [INSERT/ UPDATE/

    DELETE]

    AS Cdigo (Declarao)

  • Nome Nome atribudo ao trigger.

    ON Define para qual tabela o trigger esta sendo criado.

    FOR o valor padro e faz com o que o gatilho seja disparado junto da ao.

    AFTER Faz com que o gatilho seja disparado aps a ao gerada com sucesso.

    INSERT/UPDATE/DELETE: uma ou vrias dessas opes

    (separadas por vrgula) devem ser indicadas para informar ao banco qual a ao que disparar o gatilho.

    Cdigo Ser declarado a tarefa que trigger ir executar.

  • CREATE TABLE CAIXA (

    DATADATETIME, SALDO_INICIALDECIMAL(10,2), SALDO_FINALDECIMAL(10,2)

    ) GO

    INSERT INTO CAIXA VALUES (CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 103)), 100, 100) GO

    SELECT * FROM CAIXA

    CREATE TABLE VENDAS ( DATADATETIME, CODIGOINT, VALORDECIMAL(10,2) ) GO

  • CREATE TRIGGER TGR_VENDAS_AI ON VENDAS FOR INSERT AS BEGIN DECLARE @VALORDECIMAL(10,2), @DATADATETIME

    SELECT @DATA = DATA, @VALOR = VALOR FROM INSERTED

    UPDATE CAIXA SET SALDO_FINAL = SALDO_FINAL + @VALOR WHERE DATA = @DATA END GO

  • INSERT INTO VENDAS VALUES (CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 103)), 1, 10)

    SELECT * FROM VENDAS SELECT * FROM CAIXA

    CREATE TRIGGER TGR_VENDAS_AD ON VENDAS FOR DELETE AS BEGIN DECLARE @VALORDECIMAL(10,2), @DATADATETIME

    SELECT @DATA = DATA, @VALOR = VALOR FROM DELETED

    UPDATE CAIXA SET SALDO_FINAL = SALDO_FINAL - @VALOR WHERE DATA = @DATA END GO

  • DELETE FROM VENDAS WHERE CODIGO = 1 GO

    SELECT * FROM VENDAS SELECT * FROM CAIXA

    TRUNCATE TABLE VENDAS

    SELECT * FROM CAIXA; SELECT * FROM VENDAS