Por que o MS SQL Server SEQUENCEs não possui um parâmetro ORDER como o Oracle?


9

Na documentação de CREATE SEQUENCEpara T-SQL , você pode ver que o CREATE SEQUENCEcomando não possui ORDERparâmetro.

Para comparação, os documentosCREATE SEQUENCE do Oracle para show the ORDER/ NOORDERoptions:

ORDER

Especifique ORDERpara garantir que os números de sequência sejam gerados na ordem do pedido. Esta cláusula é útil se você estiver usando os números de sequência como registros de data e hora. A garantia do pedido geralmente não é importante para as sequências usadas para gerar chaves primárias.

ORDERé necessário apenas para garantir a geração ordenada se você estiver usando o Oracle Database com Real Application Clusters. Se você estiver usando o modo exclusivo, os números de sequência serão sempre gerados em ordem.

NOORDER

Especifique NOORDERse você não deseja garantir que os números de sequência sejam gerados na ordem do pedido. Esse é o padrão.

O Microsoft SQL Server fornece uma forte restrição de pedidos para SEQUENCEs? Ou a Microsoft não considera importante em geral?


2
Com o Oracle, isso normalmente só faz sentido com um RAC - até onde eu sei, não há nada equivalente a um RAC no SQL Server. Por que você acha que precisa disso?
— a_horse_with_no_name

Estou apenas tornando um programa compatível com o SQL Server. Ele cria algumas seqüências e, nas CREATE SEQUENCEinstruções, encontrei o parâmetro ORDER e só queria ter certeza de que não seria um problema (não tenho certeza do porquê de ter ORDERsido adicionado em primeiro lugar, então pensei em pode perguntar apenas no caso).
— Daniel Gray

Respostas:


12

No SQL Server, todos os números de sequência são gerados em uma única instância, para que eles já estejam ordenados de forma inerente. E se você os estiver usando apenas como números únicos, isso realmente não deve importar.

A implementação do Oracle é diferente porque, em um ambiente RAC (nem todas as implementações do Oracle), dois números de sequência podem ser gerados por duas "instâncias" diferentes (esse é o termo errado para o Oracle, mas apenas obtém equivalência no SQL Server). Normalmente, você não se importaria se o pedido primeiro fosse mais lento e tivesse um número maior do que o pedido mais tarde - a menos que, como dizem os documentos do Oracle, você estivesse usando as seqüências como carimbos de data e hora para refletir verdadeiramente a ordem da solicitação original.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.