Duvida com procedures
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?
É 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
Curtidas 0
Respostas
Robson Alves
13/11/2012
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 =/
Eu faria:
DECLARE @codEndereco INT
Insert into Endereo (....) VALUES (...)
SET @codEndereco = (SELECT @@IDENTITY)
INSERT INTO Pessoa (...) VALUES (..., @codEndereco)
Trigger é feio =/
GOSTEI 0
Joel Rodrigues
13/11/2012
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.
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.
GOSTEI 0
Joel Rodrigues
13/11/2012
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.
Mas enfim, o que o amigo acima disse está correto, você não precisa de triggers pelo que parece.
GOSTEI 0
Diego Dias
13/11/2012
Sim, preciso usar Trigger para o processo.
É que sou iniciante no assunto, estou pesquisando mas não encontro uma operação concreta.
Obrigado.
É 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 =/
Eu faria:
DECLARE @codEndereco INT
Insert into Endereo (....) VALUES (...)
SET @codEndereco = (SELECT @@IDENTITY)
INSERT INTO Pessoa (...) VALUES (..., @codEndereco)
Trigger é feio =/
GOSTEI 0
Joel Rodrigues
13/11/2012
Diego, por que motivo você precisa do trigger? Onde ele se encaixa?
GOSTEI 0
Diego Dias
13/11/2012
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.
Seria basicamente isso.
Diego, por que motivo você precisa do trigger? Onde ele se encaixa?
GOSTEI 0
Robson Alves
13/11/2012
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:
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.
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.
GOSTEI 0
Diego Dias
13/11/2012
Joel, na verdade são procedures diferentes, uma pra endereço e outra para pessoa.
Agradeço a atenção.
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.
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.
GOSTEI 0