Ir para conteúdo

POWERED BY:

Arquivado

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

Filipe Lourenco

trigger

Recommended Posts

Olá.Eu tenho este trigger para verificar se o campo tipo é preenchido com Normal ou Administrador

 

CREATE TRIGGER tr_Utilizador_I on Utilizador FOR INSERT AS

IF tipo<>"Administrador" OR tipo<>"Normal"

BEGIN

RAISERROR ('Tipo de Utilizador Incorrecto', 16, 1)

ROLLBACK TRAN

RETURN

END

GO

 

mas dá-me os seguintes erros:

 

Msg 207, Level 16, State 1, Procedure tr_Utilizador_I, Line 2

Invalid column name 'tipo'.

Msg 207, Level 16, State 1, Procedure tr_Utilizador_I, Line 2

Invalid column name 'Administrador'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce precisa do valor tipo a ser inserido.

Para isso não basta indicar o nome do campo.

O sql server cria uma tabela INSERTED com os mesmos atributos da tabela original e traz o resultado da inserção a ser realizada.

 

Veja como poderia ficar:

 

CREATE TRIGGER tr_Utilizador_I on Utilizador 
FOR INSERT 
AS 
   DELARE @TIPO varchar(50)

   SELECT @TIPO = tipo FROM INSERTED IF (@TIPO <>'Administrador') AND (@TIPO<>'Normal')
   BEGIN RAISERROR ('Tipo de Utilizador Incorrecto', 16, 1)
	  ROLLBACK TRAN
	  RETURN
   END
GO

Observe que o operador também precisa ser modificado.

Para entrar nesse if @TIPO tem que ser diferente de 'Normal' e diferente de 'Administracao'.

 

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.