| |
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)
|
- Sobre o Autor: Gustavo Maia Aguiar é administrador de Empresas pela Universidade de Brasília (UnB) e pós-graduado em bancos de dados pela Universidade Católica de Brasília (UCB), atua na área de tecnologia de informação desde 2001, exercendo funções de desenvolvedor, analista, administrador de banco de dados (DBA) e administrador de dados (AD). É profissional certificado (MOS, MCDBA, MCAD, MCTS (SQL 2005), MCITP (DB Dev), MCITP (DB Admin), MCT e Itil Certified Professional) e suas áreas de interesse incluem .NET, XML, SQL Server, banco de dados em geral e Business Intelligence. É membro ativo dos fóruns MSDN e TechNet além de moderador da comunidade SQL Server Brasil (Orkut).
- Comentários? Clique aqui, e faça um comentário sobre este artigo!
|
|