Perché le SEQUENZE di MS SQL Server non hanno un parametro ORDER come Oracle?


9

Nella documentazione di CREATE SEQUENCEper T-SQL , puoi vedere che il CREATE SEQUENCEcomando non ha ORDERparametri.

Per confronto, i documenti Oracle perCREATE SEQUENCE mostrare le opzioni ORDER/ NOORDER:

ORDER

Specificare ORDERper garantire che i numeri di sequenza vengano generati in ordine di richiesta. Questa clausola è utile se si utilizzano i numeri di sequenza come timestamp. Garantire l'ordine di solito non è importante per le sequenze utilizzate per generare chiavi primarie.

ORDERè necessario solo per garantire la generazione ordinata se si utilizza Oracle Database con Real Application Clusters. Se si utilizza la modalità esclusiva, i numeri di sequenza vengono sempre generati in ordine.

NOORDER

Specificare NOORDERse non si desidera garantire che i numeri di sequenza vengano generati in ordine di richiesta. Questo è il valore predefinito.

Microsoft SQL Server fornisce un forte vincolo di ordinazione per SEQUENCEs? O Microsoft non lo considera importante in generale?


2
Con Oracle questo in genere ha senso solo con un RAC - per quanto ne so non c'è nulla di equivalente a un RAC in SQL Server. Perché pensi di averne bisogno?
a_horse_with_no_name

Sto solo rendendo un programma compatibile con SQL Server. Crea alcune sequenze e, nelle CREATE SEQUENCEdichiarazioni, mi sono imbattuto nel parametro ORDER e volevo solo essere sicuro che non sarebbe stato un problema (non sono sicuro del perché sia ORDERstato aggiunto in primo luogo, quindi ho pensato di potrebbe chiedere per ogni evenienza).
Daniel Gray,

Risposte:


12

In SQL Server tutti i numeri di sequenza vengono generati su una singola istanza, quindi sono già intrinsecamente ordinati. E se li stai solo usando come numeri univoci, non dovrebbe comunque importare.

L'implementazione Oracle è diversa perché in un ambiente RAC (non tutte le implementazioni Oracle), due numeri di sequenza potrebbero essere generati da due diverse "istanze" (questo è il termine errato per Oracle ma sta semplicemente disegnando l'equivalenza in SQL Server). Normalmente non ti importerebbe se quello richiesto per primo fosse più lento e avesse un numero più alto di quello richiesto in seguito - a meno che, come dicono i documenti Oracle, stavi usando le sequenze come timestamp per riflettere veramente l'ordine della richiesta originale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.