Trigger em Procedure
16/07/2014
0
Eu tenho uma Tabela Paciente com os atributos: Nome, Morada, IdFamilia
IdFamilia é chave estrangeira para a tabela Familia.
A tabela Familia tem os atributos: IdFamilia, Morada, NPessoas.
Criei uma procedure para inserir Paciente.
spInsertPaciente 'Nome', 'Morada', 'IdFamilia'
Nessa procedure é verificado se existe algum registo de alguma Familia com a Morada do Paciente.
Se sim -> Paciente.IdFamilia = esse Id encontrado
Se não -> é criado um novo registo na Tabela Familia com os dados introduzidos
O problema está quando vou inserir novo Paciente e ele não sabe se alguem da Familia já está registado.
Neste caso passo o parametro NULL para o campo IdFamilia, mas esta procedure não está a preencher este mesmo campo com o valor certo.
Pensei em criar um trigger na procedure, mas acho que volto ao mesmo problema
Agradeço ajuda
Guilherme
Posts
16/07/2014
Guilherme
CREATE PROCEDURE spInsertPaciente @Nome VARCHAR(20), @Morada VARCHAR(50), @IdFamilia INT, @NPessoas INT AS BEGIN BEGIN TRY BEGIN TRAN DECLARE @Fam INT SELECT IdFamilia INTO Fam FROM Familia WHERE Morada LIKE '%' + @Morada + '%' SET @Fam = (SELECT COUNT(*) FROM Fam) IF(@Fam = 0) BEGIN INSERT INTO Familia(IdFamilia, Morada, NPessoas) VALUES(@IdFamilia, @Morada, @NPessoas) SET Fam = (SELECT IdFamilia FROM Fam WHERE IdFamilia = @IdFamilia) INSERT INTO Paciente(Nome, Morada, IdFamilia) VALUES(@Nome, @Morada, @IdFamilia) END ELSE SET Fam = (SELECT IdFamilia FROM Fam WHERE IdFamilia = @IdFamilia) INSERT INTO Paciente(Nome, Morada, IdFamilia) VALUES(@Nome, @Morada, @IdFamilia) COMMIT TRAN END TRY BEGIN CATCH SELECT ERROR_MESSAGE() AS Retorno END CATCH END
16/07/2014
Marisiana Battistella
Neste caso passo o parametro NULL para o campo IdFamilia, mas esta procedure não está a preencher este mesmo campo com o valor certo.
Mas vc não faz o teste para verificar se existe membro da familia cadastrado?
Não uso SQLServer, então não conseguir entender claramente o código...
16/07/2014
Guilherme
Cada familia tem a sua morada, não podendo pessoas de familias diferentes viver na mesma morada
17/07/2014
Isaac Jose
Neste caso passo o parametro NULL para o campo IdFamilia, mas esta procedure não está a preencher este mesmo campo com o valor certo.
Mas vc não faz o teste para verificar se existe membro da familia cadastrado?
Não uso SQLServer, então não conseguir entender claramente o código...
eu nao entendi direito mais e se em uma morada tiver mais de uma familia? dentro de um terreno podemos ter n casas ex bairro a av 1 numero 5 . sendo que nesse numero 5 possui casa 1 casa2 casa3 porem so o pessoal da casa sabe disso para todos os orgaos permanece como um unica casa. ai vc cadastra esse registro de uma pessoa da casa1 e depois precisa cadastrar uma pessoa de outra familia da casa2 como ira fazer isso?
nao estou falando que o seu esta errado ate pq nao sei o que o sistema ira fazer mais sim pelo que vc espos ...
att Isaac
17/07/2014
Isaac Jose
Neste caso passo o parametro NULL para o campo IdFamilia, mas esta procedure não está a preencher este mesmo campo com o valor certo.
Mas vc não faz o teste para verificar se existe membro da familia cadastrado?
Não uso SQLServer, então não conseguir entender claramente o código...
eu nao entendi direito mais e se em uma morada tiver mais de uma familia? dentro de um terreno podemos ter n casas ex bairro a av 1 numero 5 . sendo que nesse numero 5 possui casa 1 casa2 casa3 porem so o pessoal da casa sabe disso para todos os orgaos permanece como um unica casa. ai vc cadastra esse registro de uma pessoa da casa1 e depois precisa cadastrar uma pessoa de outra familia da casa2 como ira fazer isso?
nao estou falando que o seu esta errado ate pq nao sei o que o sistema ira fazer mais sim pelo que vc espos ...
att Isaac
17/07/2014
Maria Araújo
Aí sim, só há uma familia por cada morada(rua + nº) Certo?
17/07/2014
Isaac Jose
Aí sim, só há uma familia por cada morada(rua + nº) Certo?
Sim e a realidade no Brasil é outra... temos muitas casas com um unico numero mais internamente podem haver varias..
mais é como eu falei nao sei se é o caso dele rs
17/07/2014
Guilherme
17/07/2014
Isaac Jose
e se em uma casa tiver mais de 1 familia?
17/07/2014
Guilherme
Se for um predio, cada familia tem um nº de porta, dai ao fazer a comparação se diferir apenas no nº já não é a mesma morada e portanto crio nova familia
18/07/2014
Isaac Jose
então no seu caso em um numero é impossivel ter mais de uma familia morando.. se for isso ao meu ver esta correto..
18/07/2014
Guilherme
Eu pretendo passar NULL no IdFamilia para um Paciente. Depois, a procedure é que irá ver se há alguém com a mesma Morada.
Se sim, substitui NULL pelo IdFamilia obtido, se não substitui NULL por um novo IdFamilia criado.
Clique aqui para fazer login e interagir na Comunidade :)