Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RodrigoDeveloper

SQL Server - Insert, Identify e cia

Recommended Posts

Galera, iniciante no fórum, tô com uma dúvida cruel ...

 

Tenho uma tabela que tem uns campos lá ... Um desses campos é a chave primária e o outro é um que depende desse campo da chave primária, em outras palavras:

 

x -> int identity primary key

 

e

y -> int (é chave estrangeira e depende do campo x)

 

Em certos casos o campo y pode ter qualquer outro valor do campo x, no insert eu devo passar ele, neste caso.

Em outros casos o campo y tem que ter o mesmo valor do campo x, isto é, o identity que está sendo inserindo

A tabela se chama mensagem.

 

Eu precisei fazer um insert usando select, e a solução que eu tive foi a seguinte:

 

insert into 
mensagem
(
y,z
)
select
ident_current('banco..tabela'),
ot.campo
from
outra tabela ot

E nao deu certo. Ele inseriu valores errados em y, tipo, pegou o ultimo identity e inseriu o mesmo em todas as linhas. Eu também tentei usar scope_identity e @@identity e tive falha http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

 

Também tentei usar campos calculado mas nao deu certo porque há situações que eu preciso inserir valores no campo Y.. O que eu preciso é:

 

  • Fazer o insert
  • O SQL Server gera o identity pra linha
  • Pega esse identity e inserir em outra coluna, no mesmo insert, na mesma linha

Até agora a unica solução certa que eu encontrei é:

insert into 
mensagem
(
y,z
)
select
null,
ot.campo
from
outra tabela ot;

update mensagem
set y = x
where
y = null;

Mas acredito que existe algo melhor do que inserir, e depois fazerr um update : http://forum.imasters.com.br/public/style_emoticons/default/natal_ohmy.gif

 

Bom, agradeço desde já qualquer ajuda.

 

PS.: Não posso mudar a estrutura da tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma boa ref.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve se ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.