Ir para conteúdo

Arquivado

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

Roberto F.

[Resolvido] Trigger INSTEAD OF INSERT

Recommended Posts

Bom galera,

eu sou novato em MS, mas estava dando pra me virar, bom, estou tentando evitar uns dados errados no banco com um insert e update, e estou com o seguinte problema.

 

Tenho um insert que, talvez não tenha todos os dados, e fiz uma trigger para os inserts, sendo a trigger assim:

 

 

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[trg_teste]
ON [dbo].[teste] INSTEAD OF INSERT AS 

BEGIN
   DECLARE @varinsert VARCHAR(50)
   SELECT @varinsert = teste
   FROM   INSERTED

   IF EXISTS (
         SELECT 0
         FROM   teste
         WHERE  teste = @varinsert
      )
   BEGIN
       RAISERROR ('Já existe', 16, 1)
       ROLLBACK TRAN
   END
   ELSE 
   BEGIN
       SET NOCOUNT ON   
	//AQUI VEM O INSERT.

    SET NOCOUNT OFF
END
END

 

Entretanto a parte do Insert eu preciso tratar um campo para UPPER(), mas não sei se todas as querys de insert irão ter todos os campos.

 

 

Exemplo uma tabela com ID[PK AI],TESTE[CHAR],CODIGO[CHAR].

E só fiz a insert do Teste e do Codigo, Mas preciso somente tratar o campo teste.

No final, não consegui fazer esse tratamento:

 

NO INSERT e no UPDATE:

1-Bloquear caso o campo teste já exista.

2-Se não existe tratar o valor para UPPER do campo teste.

 

Alguém tem uma solução para eu conseguir essas regras?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Triggers de Instead of (ao invés de) fazem uma operação ao invés do que foi especificado, no caso um INSERT.

 

1-Bloquear caso o campo teste já exista.

 

Use uma Primary Key ou Unique Key

 

2-Se não existe tratar o valor para UPPER do campo teste.

 

Faça uma trigger sem a declaração instead of e trate o prencimento do campo.

 

 

Ajudou ?

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.