W dokumentacji CREATE SEQUENCE
T-SQL widać, że CREATE SEQUENCE
polecenie nie ma ORDER
parametru.
Dla porównania dokumentacja Oracle dlaCREATE SEQUENCE
show the ORDER
/ NOORDER
options:
ORDER
Określ,
ORDER
aby zagwarantować, że numery sekwencyjne będą generowane w kolejności żądań. Ta klauzula jest przydatna, jeśli używasz numerów sekwencyjnych jako znaczników czasu. Kolejność gwarantowana zwykle nie jest ważna dla sekwencji używanych do generowania kluczy podstawowych.
ORDER
jest konieczne tylko w celu zagwarantowania uporządkowanego generowania, jeśli korzystasz z bazy danych Oracle z Real Application Clusters. Jeśli korzystasz z trybu wyłączności, numery sekwencyjne są zawsze generowane w kolejności.
NOORDER
Określ
NOORDER
, czy nie chcesz gwarantować, że numery sekwencyjne będą generowane w kolejności żądania. To jest domyślne.
Czy Microsoft SQL Server zapewnia silne ograniczenie dla SEQUENCE
s? Czy też Microsoft nie uważa tego za ogólnie ważne?
źródło
CREATE SEQUENCE
instrukcjach natrafiłem na parametr ZAMÓWIENIE, a chciałem tylko mieć pewność, że nie będzie to problemem (nie jestem pewien, dlaczego dokładnieORDER
został dodany, więc pomyślałem, że może zapytać na wszelki wypadek).Odpowiedzi:
W SQL Server wszystkie numery sekwencyjne są generowane w jednym wystąpieniu, więc są już z natury uporządkowane. A jeśli używasz ich tylko jako unikalnych liczb, to i tak nie powinno mieć znaczenia.
Implementacja Oracle jest inna, ponieważ w środowisku RAC (nie wszystkie implementacje Oracle) dwie liczby „sekwencji” mogą zostać wygenerowane przez dwa różne „wystąpienia” (to zły termin dla Oracle, ale po prostu rysowanie równoważności w SQL Server). Zwykle nie przejmowałbyś się tym, że ten, o który najpierw poprosiłeś, był wolniejszy i uzyskał wyższy numer niż ten, o który poprosiłeś później - chyba że, jak mówią doktorzy Oracle, używałeś sekwencji jako znaczników czasu, aby naprawdę odzwierciedlać kolejność pierwotnego żądania.
źródło