SQL Server 2008: Utilizando OUTPUT no DELETE.
30/04/2012 Deixe um comentário
Sempre que você utiliza a função DELETE, é retornado pelo SQL Server 2008 uma mensagem “(X linha(s) afetadas)“. por padrão o SQL retorna somente essa mensagem, porém foi criada a função OUTPUT que permite exibir ou gravar os dados(deletados) de diversas formas.
- Um DELETE comum é realizado da seguinte forma:
DELETE FROM CLIENTE
WHERE NOME = ‘Marko Aurélio’
- Para utilizar o OUTPUT exibindo os valores deletados no ResultSet é preciso executar a seguinte estrutura:
DELETE FROM CLIENTE
OUTPUT deleted.ID, deleted.NOME
WHERE NOME = ‘Marko Aurélio’
Retornando o “Results” abaixo:
- Para utilizar o OUTPUT gravando os valores deletados em uma tabela de “LOG” é preciso executar a seguinte estrutura:
DELETE FROM CLIENTE
OUTPUT deleted.ID, deleted.NOME , GETDATE() INTO TABELALOGTEMP
WHERE NOME = ‘Marko Aurélio’
Conceitos Adicionais:
- DELETED = é uma tabela de um registro que fica na memória do SQL durante o processo de deleção de dados até o momento que é finalizada a transação interna do SQL e confirmada a remoção de dados da tabela física.
- OUTPUT = Define que existirá uma saída de dados ou um procedimento com os dados inseridos.
- INTO = Os valores que seriam exibidos em tela, são inseridos em outra tabela
- DELETE WHERE = nunca use DELETE sem WHERE. Você deletará todos os registros da tabela e o processo para restauração será muito trabalhoso (‘Mas não impossível’).
Marko Aurélio