Quantcast
Channel: Trigger em tabelas separadas
Viewing all articles
Browse latest Browse all 2

Trigger em tabelas separadas

0
0

Boa Tarde,

Estou com um pequeno problema em duas tirggers que estou montando, uma trigger em uma tabela "A" faz a insersção de dados apos algum insert na tabela "A" em uma tabela "B" (ou seja uma trigger insere dados em outra tabela). Na tabela "B" existe uma outra trigger que faz algumas alterações nestes dados e os envia via e-mail (eu sei eu sei isso não é muito recomendado mais pro nosso nivel de processamento não temos problema com os recursos do banco ou seja o disparo dos e-mails via sql server não é nem sentido :-) ). O meu problema é; os itens inseridos na tabela "A" são inseridos atraves de uma aplicação, que atualiza os registros algumas vezes antes de gravar os valores finais na tabela. Por esse motivo quando os valores são inseridos na tabela "B" os valores são do insert não o valor do ultimo Update da aplicação,e quando uso a função 'update' na trigger os registros são "duplicados" na tebela "B" e não consigo filtrar os dados que eu quero.

Ja tentei por um delay na trigger "B" para ela fazer os selects, e digamos que se auto inserir, mais não deu certo a aplicação faz o delay junto e a primeira trigger na tabela "A" não dispara.

Ja tentei por um WHILE mais não deu certo (não sei se foi a sintaxe que eu usei ou se não deu certo por não dar mesmo)

Ja Tentei como disse acima usar after insert,Update mais ai são disparados dezenas de e-mails com os valores que foram atualizados

Abaixo seguem as triggers
Trigger Tabela B:

set
ANSI_NULLS ON
set
QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [envia_email]

ON

[dbo].[Teste]
AFTER

INSERT
AS

begin
DECLARE
 
@varbody VARCHAR(8000),
@destinatario varchar(50),
@obs varchar(255),
@Data datetime,
@idmov varchar(10),
@Forn varchar(50),
@valor varchar(15),
@teste varchar(1),
@nome varchar(15),
@status varchar(15),
@valex int
SELECT
@destinatario= Destinatario, @Data = data, @obs = Obs, @idmov = idmov, @Forn = Forn, @status = status
FROM
INSERTED
Select
select
@valor = Replace(CONVERT(VARCHAR,VALOR,1),',','*') from inserted
set
@valor = replace(@valor,'.',',')
set
@valor = replace(@valor,'*','.') 

SET
@varbody ='Corpo do e-mail'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'teste',
@recipients = @destinatario,
@body = @varbody,
@subject = 'Titulo'
print @status
end

A Trigger da tebela "A" é:

set
ANSI_NULLS ON
set
QUOTED_IDENTIFIER ON
go
ALTER
TRIGGER [Insert]
ON
[Teste].[dbo].[movimento]
AFTER
INSERT
AS
BEGIN
DECLARE
@email varchar(50)
DECLARE
@movi VARCHAR(10),
@NumeroMov
INT,
@DataCriacao
DATETIME,
@Obs
varchar(255),
@idmov
int,
@Forn
varchar(100),
@valor
money,
@count
int,
@status
Varchar(1)
SELECT
@movi= movi, @status = status
FROM
INSERTED
SELECT
@movi= movi, @DataCriacao = DataCriacao, @valor = valorliquido
FROM
INSERTED
/* -----------------------Select E-mail--------------------------------*/
Select
@email = mail.email
from
mail,movimento where movimento.codven1 = mail.codven and movimento.codcoligada = 1
/* --------------------------------------------------------------------*/
/* --------------------------Select Idmov------------------------------*/
Select
@idmov = idmov
from
inserted
/* --------------------------------------------------------------------*/
/* -----------------------Select Observação----------------------------*/
Select
@Obs = movimentohistorico.historicocurto
from
movimentohistorico,movimento where movimento.idmov = movimentohistorico.idmov and movimento.codcoligada = 1
/* --------------------------------------------------------------------*/
/* ----------------------Select Fornecedor----------------------------*/
Select
@Forn = fcfo.nomefantasia
from
fcfo,movimento where movimento.codcfo = fcfo.codcfo and fcfo.codcoligada = movimento.codcolcfo and movimento.idmov = @idmov
/* --------------------------------------------------------------------*/
/*end*/
if

 

@movi = '1.1.12'
begin
INSERT
 

INTO Teste VALUES (@email,@Forn,@DataCriacao,@Obs,@idmov,@valor,@status)
end
end


Viewing all articles
Browse latest Browse all 2

Latest Images

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Vimeo 10.6.2 by Vimeo.com, Inc.

Vimeo 10.6.2 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Re:

Re:





Latest Images

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Re:

Re:

Re:

Re: