Array
(
)

Trigger - sql server 2008

Bgsouza
   - 16 jun 2013

trigger para Simular uma mala direta com um print, caso seja cadastrado em uma certa tabela os avisos para os clientes de um certo médico. algueem?

Joel Rodrigues
   - 17 jun 2013

Poderia detalhar melhor qual é sua dificuldade?

0
|
0

Bgsouza
   - 17 jun 2013

Sei criar uma trigger basica, agr essa dai nao seei nem a logica dela viu cara. se souber me ajuda ae pfv

0
|
0

Joel Rodrigues
   - 17 jun 2013

Beleza, vamos lá.
Explique detalhadamente o que o trigger deve fazer, para sabermos por onde começar.

0
|
0

Bgsouza
   - 17 jun 2013

É um bd de uma clinica médica, onde tem as tebelas (médico, paciente, consulta e aviso), essa tabela aviso tem o crm do medico, o aviso e o cpf do paciente. entao o trigger deve:
-Simular uma mala direta com um print, caso seja cadastrado em uma certa tabela os avisos para os clientes de um certo médico.

0
|
0

Joel Rodrigues
   - 17 jun 2013

Quando forem cadastradas consultas, deve avisar ao cliente da consulta? É isso?

0
|
0

Joel Rodrigues
   - 17 jun 2013

Perdão, é pra quando cadastrar AVISOS, avisar ao cliente que foi avisado?

0
|
0

Bgsouza
   - 17 jun 2013

pelo que eu entendi eh isso mesmo.

0
|
0

Bgsouza
   - 17 jun 2013


Citação:
Perdão, é pra quando cadastrar AVISOS, avisar ao cliente que foi avisado?


vaai poder me ajudar joel?

0
|
0

Joel Rodrigues
   - 17 jun 2013

Vou tentar, amigo. Farei o possível, mas precisarei pesquisar um pouco sobre a questão de enviar os emails, pois só o trigger é bem fácil.

0
|
0

Joel Rodrigues
   - 20 jun 2013

Cara, agora que me toquei. Você não precisa enviar o email, não é? Você quer exibir uma mensagem com PRINT simulando o envio.
É isso?

0
|
0

Joel Rodrigues
   - 20 jun 2013

Seria algo assim:
#Código

CREATE TRIGER tgr_AVISOS_Insert
AS
BEGIN
	DECLARE
	@CPF		VARCHAR(15),
	@MENSAGEM	VARCHAR(500)
	
	SELECT @CPF = CpfPaciente, @MENSAGEM = Mensagem FROM INSERTED
	
	SET @MENSAGEM = 'Email enviado para o cliente de CPF ' + @CPF + ': '+@MENSAGEM
	
	PRINT @MENSAGEM
END
?

0
|
0

Joel Rodrigues
   - 20 jun 2013

Ou você tem o email do paciente em outra tabela e precisa recuperá-lo também? Para que a mensagem seja mais fiel ao envio do email?

0
|
0

Bgsouza
   - 20 jun 2013

Eh isso msm, ate pq, pelo que eu pesquisei aq, nao eh possivel enviar um email atravez do sql, entao teria que ser apenas uma simulação por um print.

0
|
0

Joel Rodrigues
   - 20 jun 2013

Foi mal, esqueci de umas coisas no código, pois fiz direto no notepad:
#Código

CREATE TRIGER tgr_AVISOS_Insert
ON Avisos
FOR INSERT
AS
BEGIN
	DECLARE
	@CPF		VARCHAR(15),
	@MENSAGEM	VARCHAR(500)
	
	SELECT @CPF = CpfPaciente, @MENSAGEM = Mensagem FROM INSERTED
	
	SET @MENSAGEM = 'Email enviado para o cliente de CPF ' + @CPF + ': '+@MENSAGEM
	
	PRINT @MENSAGEM
END

0
|
0

Bgsouza
   - 20 jun 2013

Isso msm, vlw

SELECT @CPF = CpfPaciente, @MENSAGEM = Mensagem FROM INSERTED

posso fazer um select no lugar de CPFPACIENTE ae pra mostrar o nome dele ne?
(precisa fazer nao, so pra saber msm)

0
|
0

Joel Rodrigues
   - 20 jun 2013

Exato, só que aí você faria um inner join com a tabela de pacientes, para pegar o nome, relacionando com a coluna CpfPaciente da tabela INSERTED.

0
|
0

Bgsouza
   - 20 jun 2013

AS
BEGIN
DECLARE
@CpfPaciente varchar(15),
@CrmMedico varchar(20),
@MENSAGEM VARCHAR(500)

SELECT @CpfPaciente = CpfPaciente, @CrmMedico = CrmMedico, @MENSAGEM = Mensagem FROM INSERTED

SET @MENSAGEM = 'Email enviado para o paciente' + @CpfPaciente + ' do medico ' + @CrmMedico + ' : ' + @MENSAGEM

PRINT @MENSAGEM
END

0
|
0

Bgsouza
   - 20 jun 2013

#Código

Alter TRIGGER AVISO_INSERIR
ON Avisos
FOR INSERT
AS
BEGIN
DECLARE
@CpfPaciente varchar(15),
@CrmMedico varchar(20),
@MENSAGEM	VARCHAR(500)

SELECT 
@CpfPaciente = (select p.nome from Paciente as p inner join Avisos as a
on p.CpfPaciente = a.CpfPaciente), 
@CrmMedico = (select m.nome from Medico as m inner join Avisos as a
on m.Crm = a.CrmMedico), 
@MENSAGEM = Mensagem FROM INSERTED

SET @MENSAGEM = 'Email enviado para o(a) cliente (' + @CpfPaciente + ') do medico(a) (' + @CrmMedico + ') : ' + @MENSAGEM

PRINT @MENSAGEM
END


Agr ta pronto. vlw

0
|
0

Joel Rodrigues
   - 20 jun 2013

Show de bola. Que bom que deu certo.
Então estou encerrando o tópico.
Abraço.

0
|
0

Alex Lekao
   - 20 jun 2013

Ola Boa tarde!!!

Acredito que seja possivel criar um Job para enviar estes e-mails, e colocar para o que o Job rode a cada hora ou algo do tipo, e no script sql teria os condicionais para fosse enviado so daquilo que tive um limite de envio, por exemplo que faltam 4 horas para a consulta ou 1 dia para a consulta etc, etc.

Acho que pode ser interessante algo deste tipo. rsrsr

Abraco.

Alex - Lekao

0
|
0