Duvida com procedures
13/11/2012
0
É 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
Posts
13/11/2012
Robson Alves
Eu faria:
DECLARE @codEndereco INT
Insert into Endereo (....) VALUES (...)
SET @codEndereco = (SELECT @@IDENTITY)
INSERT INTO Pessoa (...) VALUES (..., @codEndereco)
Trigger é feio =/
13/11/2012
Joel Rodrigues
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.
13/11/2012
Joel Rodrigues
Mas enfim, o que o amigo acima disse está correto, você não precisa de triggers pelo que parece.
13/11/2012
Diego Dias
É que sou iniciante no assunto, estou pesquisando mas não encontro uma operação concreta.
Obrigado.
Eu faria:
DECLARE @codEndereco INT
Insert into Endereo (....) VALUES (...)
SET @codEndereco = (SELECT @@IDENTITY)
INSERT INTO Pessoa (...) VALUES (..., @codEndereco)
Trigger é feio =/
13/11/2012
Joel Rodrigues
13/11/2012
Diego Dias
Seria basicamente isso.
13/11/2012
Robson Alves
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.
14/11/2012
Diego Dias
Agradeço a atenção.
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.
Clique aqui para fazer login e interagir na Comunidade :)