Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Sequência vs identidade


Acho que você encontrará sua resposta aqui

Usando o atributo identity para uma coluna, você pode facilmente gerar números de incremento automático (que são frequentemente usados ​​como chave primária). WithSequence, será um objeto diferente que você pode anexar a uma coluna da tabela durante a inserção. Ao contrário da identidade, o próximo número para o valor da coluna será recuperado da memória e não do disco – isso torna a Sequência significativamente mais rápida que a Identidade. Veremos isso nos próximos exemplos.

E aqui:

Sequências:As sequências são solicitadas pela comunidade do SQL Server há anos e estão incluídas nesta versão. Sequência é um objeto definido pelo usuário que gera uma sequência de um número. Aqui está um exemplo usando Sequence.

e aqui também:

Um objeto de sequência do SQL Server gera uma sequência de números como uma coluna de identidade em tabelas sql. Mas a vantagem de sequencenumbers é que o objeto de número de sequência não está limitado a uma única tabela sql.

e no msdn você também pode ler mais sobre o uso e por que precisamos dele (aqui):

Uma sequência é um objeto vinculado ao esquema definido pelo usuário que gera uma sequência de valores numéricos de acordo com a especificação com a qual a sequência foi criada. A seqüência de valores numéricos é gerada em ordem crescente ou decrescente em um intervalo definido e pode ciclar (repetir) conforme solicitado. As sequências, ao contrário das colunas de identidade, não são associadas a tabelas. Um aplicativo se refere a um objeto de sequência para receber seu próximo valor. A relação entre sequências e tabelas é controlada pelo aplicativo. Os aplicativos do usuário podem fazer referência a um objeto de sequência e coordenar as chaves de valores em várias linhas e tabelas.

Uma sequência é criada independentemente das tabelas usando a instrução CREATESEQUENCE. As opções permitem controlar os valores de incremento, máximo e mínimo, ponto de partida, capacidade de reinicialização automática e armazenamento em cache para melhorar o desempenho. Para obter informações sobre as opções, consulte CREATE SEQUENCE.

Ao contrário dos valores da coluna de identidade, que são gerados quando as linhas são inseridas, um aplicativo pode obter o próximo número de sequência antes de inserir a linha chamando a função NEXT VALUE FOR. O número de sequência é alocado quando NEXT VALUE FOR é chamado, mesmo que o número nunca seja inserido em uma tabela. A função NEXT VALUE FOR pode ser usada como o valor padrão para uma coluna em uma definição de tabela. Usesp_sequence_get_range para obter um intervalo de vários números de sequência de uma só vez.

Uma sequência pode ser definida como qualquer tipo de dados inteiro. Se o tipo de dados não for especificado, uma sequência será padronizada como bigint.