sexta-feira, 25 de janeiro de 2013

Triggers


Olá,

por mais "batido" que pareça o assunto, gostaria de reforçar o conceito de tratamento dos registros inseridos, atualizados ou excluídos através de TRIGGERS.

Assim como no trânsito existe a Direção Defensiva, em desenvolvimento de software existe a Programação Defensiva.

Seguindo este conceito, eu recomendo sempre utilizar o CURSOR nas triggers, desta forma fica garantido o tratamento correto dos registros atualizados.

Então, lá vai o "esqueleto" padrão de uma trigger com o tratamento correto dos registros:

-- Tabela monitorada: Produto
-- Evento monitorado: Insert
CREATE TRIGGER ProdutoInsert ON Produto
WITH ENCRYPTION
FOR INSERT
AS
BEGIN
  -- Declaracao de variaveis e cursor
  DECLARE @Codigo INTEGER
  DECLARE Cursor1 CURSOR
  FOR
    SELECT Codigo
    FROM INSERTED
  -- Abertura do cursor
  OPEN Cursor1
  FETCH NEXT FROM Cursor1 INTO @Codigo
  -- Loop dos registros enquanto nao houver erros
  WHILE @@FETCH_STATUS = 0
  BEGIN
    -- To-do...

    -- Proximo
    FETCH NEXT FROM Cursor1 INTO @Codigo
  END
  -- Fechamento do Cursor
  CLOSE Cursor1
  DEALLOCATE Cursor1
END
go

Postar um comentário