Jump to content

Archived

This topic is now archived and is closed to further replies.

nivaldo_js

Trigger

Recommended Posts

Cara segue um exemplo parecido.

CREATE Trigger tr_insert_pessoas on dbo_clienteAfter Insertas Declare @cpf_cgc as varchar(20),@Razao_Social as Varchar(250),@Mensagem as Varchar(100),@id_clientes as IntSelect @id_clientes=id_clientes,@razao_social=razao_social,@cpf_cgc=cpf_cgcfrom inserted If Not @cpf_cgc is Null and @Cpf_Cgc <> '' BEGIN If Exists(Select '*' from dbo_cliente where cpf_cgc=@cpf_cgc and id_clientes<>@id_clientes)	Begin Set @Mensagem = 'O CLIENTE ' + @razao_social + ' NÃO PODE SER INCLUÍDO, POIS ESTE CPF/CGC JÁ ESTA CADASTRADO NO SISTEMA'		RaisError(@Mensagem,10,1)		ROLLBACK	EndEND

Share this post


Link to post
Share on other sites

caro marcelo!!houve erro na criacao!!create trigger tr_insert_fardo on lanc_prod after insert as Declare@fardo as varchar(20)select @fardo=fardofrom insertedif not @fardo is nullbegin if exists (select '*' from kuh_lanc_prod where fardo=@fardo) rollbackenderro:abaixo Server: Msg 170, Level 15, State 1, Procedure tr_insert_fardo, Line 2Line 2: Incorrect syntax near 'after'.?!??!?!?

Share this post


Link to post
Share on other sites

Tenta assim:

Create trigger tr_insert_fardo on lanc_prod after insert asDeclare @fardo as varchar(20)select @fardo=fardo from insertedif not @fardo is nullbegin if exists (select '*' from kuh_lanc_prod where fardo=@fardo) rollbackend

Aliás...Os nomes das tabelas são diferentes mesmo

kuh_lanc_prod

lanc_prod

Share this post


Link to post
Share on other sites

mas ja tinha arrumado kuh_lanc_prodCreate trigger tr_insert_fardo on kuh_lanc_prod after insert asDeclare @fardo as varchar(20)select @fardo=fardofrom insertedif not @fardo is nullbegin if exists (select '*' from kuh_lanc_prod where fardo=@fardo)rollbackend

Share this post


Link to post
Share on other sites

Já sei...Acho que o SQL 7 não tem suporte para o AFTER..Tem tirar o AFter e incluir o FOR...Ficaria assim :

Create trigger tr_insert_fardo on kuh_lanc_prod for insert asDeclare @fardo as varchar(20)select @fardo=fardofrom insertedif not @fardo is nullbegin if exists (select '*' from kuh_lanc_prod where fardo=@fardo)rollbackend

Share this post


Link to post
Share on other sites

Caro MarcelGostaria de mais uma ajuda, se possivel !!if exists (select '*' from kuh_lanc_prod where fardo=@fardo)pq esta condicao acima, ela sendo verdadeira como falsa ela entra !!poderia me ajudar onde esta o erro !!alias erro nao da simplismente a condicao !!Ok!

Share this post


Link to post
Share on other sites

Caro Marcelomas eu utilizo o begin ..end :como abaixo descritoalter trigger tr_insert_fardo on kuh_lanc_prod for insert asDeclare @fardo as varchar(20)select @fardo=fardofrom insertedbeginif exists (select '*' from kuh_lanc_prod where fardo =@fardo )begin print 'nao cadastrado ! '+ @fardo rollbackendELSEBEGINprint 'cadastrado ! '+ @fardo COMMITENDendGO

Share this post


Link to post
Share on other sites

JA COLOQUEI COM O NOME DO CAMPOELE PEGA SIM!! COMO ELE ENTRA SENDO A CONDIÇÃO FOR VERDADEIRA OU FALSA, ELE MOSTRA A MSG DE NAO CADASTRADO E O CONTEUDO DAVAR AO LADOEX:PRINT 'NAO CADASTRADO !! '+@FARDOMOSTRA NAO CADASTRADO 0000009 -->ESTE CAMPO E CARACTERE E ISSO !!

Share this post


Link to post
Share on other sites

OK!!TUDO BEM REF. A MSG, MAS A IDEIA Q SE EXISTE NAO CADASTRAR, E MESMO ASSIM ELE CADASTRA !DEPEDENDO DA MSG ELE SEMPRE ENTRA NA PRIMEIRA CONDICAO, SE EU TROCAR O ROLLBAKC POR COMMIT ELE CADASTRA CASO CONTRARIO NAO !E JA FIZ TESTES, ELE DUPLICA A INFORMAÇÃO NO DB !!AMIGO, OBRIGADO PELA ATENÇÃO !!alter trigger tr_insert_fardo on kuh_lanc_prod for insert asDeclare @fardo as varchar(20)select @fardo=fardofrom insertedbeginif exists (select fardo from kuh_lanc_prod where fardo =@fardo)begin print 'nAO FOI cadastrado NA DB ! '+ @fardo ROLLBACKendELSEBEGINprint ' CADASTRADO NA DB COM SUCESSO! '+ @fardo COMMITENDendGO

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.