Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Desenvolvimento » Banco de dados e SQL » SQL Server: Geração de seqüenciais de forma automática -->
 
Avaliação: | Publicado em: 20/09/2007
SQL Server: Geração de seqüenciais de forma automática


Observações

Embora o Identity represente uma enorme facilidade na geração de seqüencias, ele possui algumas limitações. Destaco a seguir, algumas limitações e recomendações que julgo importantes.

  • A utilização de colunas Identity permite o uso de GAPs. Se você não deseja que GAPs ocorram, procure outra solução que não utilize o Identity
  • Só é permitido um único Identity por tabela (não faria muito sentido ter mais de um)
  • Se for necessário que o Identity garanta a unicidade do registro, marque-o como Primary Key ou Unique Key
  • Dentro de uma mesma sessão só é possível utilizar o comando SET IDENTITY_INSERT com uma tabela por vez
  • Instruções SELECT * FROM podem falhar em conjunto com a instrução SET IDENTITY_INSERT. É preciso especificar os campos
  • A utilização dos comandos SET IDENTITY_INSERT e DBCC CHECKIDENT exige permissões elevadas (db_ddladmin, db_owner ou sysadmin)
  • Evite utilizar o TRUNCATE TABLE sem saber as conseqüências desse comando (Log)
  • O Identity funciona como uma chave artificial (Surrogate Key) e não deve ter vínculos diretos com o negócio
  • Se for necessário gerar seqüências alfanuméricas (PL1, PL2, PL3, PL4, etc), considere combinar o Identity em um campo calculado
  • Utilize as funções @@identity e Scope_Identity() de forma apropriada
  • Índices clusterizados sofrem menos fragmentação quando utilizados em colunas Identity
  • Colunas Identity não podem estar na declaração de tipos, mas podem ser utilizadas em conjunto com eles
  • Colunas Identity não são muito flexíveis para identificar a posição de uma linha. Nesse caso utilize outras funções como Row_Number, Rank e Dense_Rank
  • Só é possível utilizar a propriedade Identity durante a criação de uma tabela. Não há como alterá-la posteriormente para adicionar ou retirar o Identity. Se isso for necessário, é preciso dropar e recriar a tabela (é exatamente isso que as ferramentas gráficas fazem)