Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viniciuslaredo

INSTEAD OF na Trigger

Recommended Posts

Boa tarde pessoal,

Estou fazendo um trabalho de Banco de Dados sobre Trigger e estou com dúvida de como usar o INSTEAD OF na Trigger.

Segue enunciano:

 

Um mecanismo interessante para armazenar o histórico de registros excluídos em um banco de dados é a marcação do registro como

excluído, porém, sem a sua exclusão física. Acrescente um campo do tipo BIT chamado Excluido na tabela de locações. Esse campo deve possuir o valor default 0 (zero). Após,escreva uma Trigger que não permita a exclusão física dos registros de locação. Quando um comando de exclusão for detectado, a Trigger deve alterar o valor do campo Excluido de 0 (zero) para 1 (um).

Dica: A melhor forma de criar essa funcionalidade no SQL Server é utilizar uma Trigger com argumento INSTEAD OF. Pesquise sobre esse argumento e crie a Trigger utilizando-o.

 

Comecei resolvendo da forma abaixo, mais LOGICO, não funcionou rsrsrsrsrsr, conseguem me ajudar a resolver o problema?

 

--CRIANDO COLUNA EXCLUIDO DO TIPO BIT COM VALOR 0(ZERO) DEFAULT

ALTER TABLE Locacao

ADD Excluido BIT NOT NULL DEFAULT (0)

 

--CRIAÇÃO DA TRIGGER

CREATE TRIGGER tr_ExclusaoAlteraExcluido

ON Locacao

INSTEAD OF DELETE

AS

DECLARE @CodLocacao INT

SELECT @CodLocacaoCodigo = LocacaoCodigo

FROM DELETED

AS BEGIN

IF(DELETE * FROM DELETED WHERE LocacaoCodigo = @CodLocacao)

BEGIN

(UPDATE Locacao

SET Excluido = '1'

WHERE LocacaoCodigo = @CodLocacao)

END

END

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

viniciuslaredo, bem vindo ao fórum.

Sugiro você dar uma lida nas regras do fórum para conhece-las:

http://forum.imasters.com.br/index.php?app=core&module=help

 

 

Agora com relacao ao seu post.

 

A criação do campo nao precisa ser necessiariamente do tipo BIT. Foi dado este exemplo devido a facilidade de guardar 0 ou 1, mas e se você tivesse que marcar o registro como Cancelado, Excluído ou Ativo? Ai teriamos que mudar o campo. Quando pegar exemplos deste modo, questione. Tem que ter um "porque" e uma resposta condizente. Vale tanto para o fórum qto para cursos etc...

Falo isso por várias experiencias que passei.

 

Tipo de dados do SQL você dar uma lida neste tópico:

http://forum.imasters.com.br/topic/427627-tipo-de-dados/

 

Criação de campo

ALTER TABLE Locacao ADD Excluido BIT NOT NULL DEFAULT (0) 

Sem problemas para criar o campo. O que eu mudaria seria realizar um update neste campo para o valor default.

 

Trigger

Cuidado com o uso desta funcionalidade. Problemas de performance, indices e falhas em replicação de dados são os erros mais comuns.

No caso do exemplo que postou, você NÃO IRÁ EXCLUIR O REGISTRO!

...armazenar o histórico de registros excluídos em um banco de dados é a marcação do registro como

excluído, porém, sem a sua exclusão física.

Acrescente um campo do tipo BIT chamado Excluido na tabela de locações.

Esse campo deve possuir o valor default 0 (zero).

Após,escreva uma Trigger que não permita a exclusão física dos registros de locação.

Quando um comando de exclusão for detectado, a Trigger deve alterar o valor do campo Excluido de 0 (zero) para 1 (um).

Dica: A melhor forma de criar essa funcionalidade no SQL Server é utilizar uma Trigger com argumento INSTEAD OF. Pesquise sobre esse argumento e crie a Trigger utilizando-o.

 

De uma olhada neste link para entender mais sobre Trigger:

http://msdn.microsoft.com/pt-br/library/ms189799.aspx

 

Abçs

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.