Duvida com procedures

13/11/2012

0

Tenho 2 tabelas no meu BD, neste preciso adicionar uma pessoa com Procedures e Triggers.
É necessário seguir uma ordem para adicionar, segue:
1º - Adiciona Endereco
2º - Adicionar Pessoa

A tabela Pessoa possui Foreign Key de Endereco (codEndereco [int, IDENTITY]), como faço para retornar o codEndereço para Pessoa?
Diego Dias

Diego Dias

Responder

Posts

13/11/2012

Robson Alves

Você realmente quer usar Trigger?

Eu faria:
DECLARE @codEndereco INT

Insert into Endereo (....) VALUES (...)

SET @codEndereco = (SELECT @@IDENTITY)

INSERT INTO Pessoa (...) VALUES (..., @codEndereco)

Trigger é feio =/



Responder

13/11/2012

Joel Rodrigues

Olá, se entendi bem, em um único procedure você quer fazer um insert na tabela de endereços e de pessoas, certo?
Primeiramente você insere o dado na tabela de endereços e faz um select MAX(codEndereco) ou SCOPE_IDENTITY() para obter o código inserido. Em seguida, usa essa informação para inserir na tabela de pessoas.
Como se trata de um identity, experimente usar a função SCOPE_IDENTIY(), por ser mais segura e adequada.
Boa sorte.
Responder

13/11/2012

Joel Rodrigues

Opa, minha mensagem saiu atrasada. he he
Mas enfim, o que o amigo acima disse está correto, você não precisa de triggers pelo que parece.
Responder

13/11/2012

Diego Dias

Sim, preciso usar Trigger para o processo.
É que sou iniciante no assunto, estou pesquisando mas não encontro uma operação concreta.

Obrigado.

Você realmente quer usar Trigger?

Eu faria:
DECLARE @codEndereco INT

Insert into Endereo (....) VALUES (...)

SET @codEndereco = (SELECT @@IDENTITY)

INSERT INTO Pessoa (...) VALUES (..., @codEndereco)

Trigger é feio =/



Responder

13/11/2012

Joel Rodrigues

Diego, por que motivo você precisa do trigger? Onde ele se encaixa?
Responder

13/11/2012

Diego Dias

Joel, na verdade não sei realmente se precisa de Trigger, meu tutor me informou que era preciso, para que, quando for inserir a pessoa soltar um gatilho para inserir o endereço antes.
Seria basicamente isso.

Diego, por que motivo você precisa do trigger? Onde ele se encaixa?
Responder

13/11/2012

Robson Alves

O conceito da trigger é esse mesmo...
Porém o seu cenário se resolve de forma muito mais simples.

Mas vc precisa criar uma trigger:

CREATE
TRIGGER T_INSERTED ON TABLE
FOR
INSERT
AS

select * from inserted


A trigger executa o gatilho a partir dos tipos que vc declarou na criação da trigger.
O Inserted é o registro que está sendo inserido, então você monta seu select para fazer o insert na tabela de pessoa.



Responder

14/11/2012

Diego Dias

Joel, na verdade são procedures diferentes, uma pra endereço e outra para pessoa.
Agradeço a atenção.

Olá, se entendi bem, em um único procedure você quer fazer um insert na tabela de endereços e de pessoas, certo?
Primeiramente você insere o dado na tabela de endereços e faz um select MAX(codEndereco) ou SCOPE_IDENTITY() para obter o código inserido. Em seguida, usa essa informação para inserir na tabela de pessoas.
Como se trata de um identity, experimente usar a função SCOPE_IDENTIY(), por ser mais segura e adequada.
Boa sorte.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar