none
Trigger RRS feed

  • Pergunta

  • Como se cria uma trigger para exibir o nome deletado junto de uma mensagem? Quero que exiba do seguinte modo: "fulano foi removido do banco de dados".
    quarta-feira, 25 de janeiro de 2012 03:38

Respostas

  • Daniel,

        Segue um exemplo abaixo:

        - Note que a trigger utiliza um CURSOR para recuperar todos os nomes excluidos e mostrar a mensagem para cada um dos nomes. Caso você SEMPRE faça o seu DELETE apagar apenas um registro, descomente a parte do código logo após o texto "-- opção que mostra apenas o último registro excluido" e comente todo o código após o texto "-- opção que mostra todos os registros excluidos" até o "-- Final do Cursor"

       Depois de excluir um registro, vej que na aba Messages, haverá a informação "fulado foi removido do banco de dados"

    CREATE TRIGGER trg_Delete 
       ON  dbo.Clientes
       AFTER DELETE
    AS 
    BEGIN
    	SET NOCOUNT ON;
        DECLARE @Nome VARCHAR(40)
        
        -- opção que mostra apenas o último registro excluido<br/>    --SELECT @nome = NomeCliente FROM deleted
        --RAISERROR(N'%s foi removido do banco de dados 1', 10, 1, @nome)
    
        -- opção que mostra todos os registros excluidos    
        DECLARE  curDELETE CURSOR FOR
        SELECT NomeCliente FROM DELETED
        
        OPEN curDELETE
        FETCH NEXT FROM curDELETE
        INTO @Nome;
        
        WHILE @@FETCH_STATUS = 0
           BEGIN                
              RAISERROR(N'%s foi removido do banco de dados', 10, 1, @nome)
              FETCH NEXT FROM curDELETE
              INTO @nome;
           END
        CLOSE curDELETE;
        DEALLOCATE curDELETE;<br/>    -- Final do Cursor<br/>END
    GO
    
    

      


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
    • Marcado como Resposta Harley Araujo sexta-feira, 27 de janeiro de 2012 10:54
    quarta-feira, 25 de janeiro de 2012 04:52
    Moderador