Usuário com melhor resposta
Trigger para valores duplicados

Pergunta
-
Boa tarde,
tentei criar uma Trigger para impedir valores duplicados, porém não esta funcioando, sou novo com trigger e nao sei como resolver o problema, segue o código.
Alter Trigger InsertProduto on Produto Instead of Insert, Update As Begin Begin Try Select produto.nome From Produto inner join inserted on (produto.nome = inserted.nome); Insert into Produto values (Nome, Origem, Descricao) values (inserted.nome, inserted.origem, inserted.descricao) End Try Begin Catch Select ' Produto ja cadastrado ' End Catch End
Rafael Poveda
Respostas
-
Boa tarde Rafael,
Segue um exemplo bem simples envolvendo o seu cenário.
Alter Trigger InsertProduto on Produto Instead of Insert
As
declare
@int int;
Begin
Select @int = COUNT(*) From Produto inner join
inserted on (produto.nome = inserted.nome);
if @int >= 1
Select ' Produto ja cadastrado ';
else
Insert into Produto(Nome, Origem, Descricao)select nome, origem, descricao from inserted;
EndQualquer dúvida estou à disposição.
- Marcado como Resposta Rafael.Poveda quarta-feira, 29 de setembro de 2010 16:31
Todas as Respostas
-
Boa tarde Rafael,
Segue um exemplo bem simples envolvendo o seu cenário.
Alter Trigger InsertProduto on Produto Instead of Insert
As
declare
@int int;
Begin
Select @int = COUNT(*) From Produto inner join
inserted on (produto.nome = inserted.nome);
if @int >= 1
Select ' Produto ja cadastrado ';
else
Insert into Produto(Nome, Origem, Descricao)select nome, origem, descricao from inserted;
EndQualquer dúvida estou à disposição.
- Marcado como Resposta Rafael.Poveda quarta-feira, 29 de setembro de 2010 16:31
-
-
Rafael,
Não acho que essa seja a melhor solução para o seu problema. O SQL Server possui CONSTRAINTS para fazer isso que você precisa. A constraint de UNIQUE evita que você tenha valores duplicados na sua tabela... Se for inserido um valor duplicado o SQL automaticamente devolve uma mensagem que erro na aplicação que pode ser facilmente tratada num bloco try/catch/finally.
Att,
Roberto Fonseca
MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008- Sugerido como Resposta Rui SantosModerator sábado, 2 de outubro de 2010 16:37