• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ze

[SQLServer] Qual o valor gerando para a chave

7 mensagens neste tópico

Ola,

Eu numa tabela tenho 1 campo do tipo inteiro com identity (que é a chave)

O que eu quero é para um insert saber qual foi o valor da identity gerado. Fazer um select à tabela não serve, porque nada me garante que só será retornado um tupulo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse exemplo não serve. o "@@idenity" é usado para obter o último valor gerado por um campo identity. Do pouco que sei sobre base de dados, sei que não garante a atomicidade do par de operações (select e insert), logo como viola uma das regras de Codd não serve para fazer uma coisa bem feita.

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse exemplo não serve. o "@@idenity" é usado para obter o último valor gerado por um campo identity.

Obter o valor correcto para o último valor gerado para um campo IDENTITY é complicado, seja em MSSQL ou em qualquer outro motor, uma das formas de resolver o problema é mesmo não teres campos desse tipo. Campos com valor auto-incrementado pelo motor de base de dados não são as melhores opções, podem ser as únicas, mas têm as suas limitações, terás de viver com elas porque existem várias situações onde vão falhar e vais sempre ter uma solução que a dada altura viola as regras de Codd, e, pelas tuas palavras, não permite fazer uma coisa bem feita.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pela experiência que tenho o IDENTITY é muito fiável se for executado na mesma transacção que o INSERT.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pela experiência que tenho o IDENTITY é muito fiável se for executado na mesma transacção que o INSERT.

Eu uso sempre e nunca tive problemas!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora