Чому MS SQL Server SEQUENCE не мають параметр ORDER, як Oracle?


9

У документації CREATE SEQUENCEдля T-SQL ви бачите, що CREATE SEQUENCEкоманда не має ORDERпараметра.

Для порівняння, документи Oracle дляCREATE SEQUENCE показу ORDER/ NOORDERпараметрів:

ORDER

Вкажіть, ORDERщоб гарантувати, що порядкові номери генеруються в порядку запиту. Цей пункт корисний, якщо ви використовуєте порядкові номери як часові позначки. Гарантійний порядок зазвичай не важливий для послідовностей, що використовуються для генерації первинних ключів.

ORDERнеобхідно лише гарантувати впорядковану генерацію, якщо ви використовуєте базу даних Oracle з реальними кластерами прикладних програм. Якщо ви використовуєте ексклюзивний режим, порядкові номери завжди генеруються в порядку.

NOORDER

Вкажіть, NOORDERякщо ви не хочете гарантувати, що порядкові номери генеруються в порядку запиту. Це за замовчуванням.

Чи надає Microsoft SQL Server сильне обмеження для замовлення для SEQUENCEs? Або Microsoft взагалі не вважає це важливим?


2
З Oracle це має сенс лише для RAC - наскільки я знаю, немає нічого еквівалентного RAC в SQL Server. Чому, на вашу думку, вам це потрібно?
a_horse_with_no_name

Я просто роблю програму, сумісну з SQL Server. Це створює деякі послідовності, і у CREATE SEQUENCEвисловлюваннях я натрапив на параметр ЗАМОВЛЕННЯ, і я просто хотів бути впевненим, що це не буде проблемою (я не впевнений, чому саме це ORDERбуло додано в першу чергу, тому я подумав, що я може запитати про всяк випадок).
Даніель Грей

Відповіді:


12

У SQL Server усі порядкові номери генеруються в одному екземплярі, тому вони вже впорядковані. І якщо ви просто використовуєте їх як унікальні номери, це насправді не має значення.

Реалізація Oracle відрізняється тим, що в середовищі RAC (не у всіх реалізаціях Oracle) два послідовних номери можуть бути згенеровані двома різними "екземплярами" (це неправильний термін для Oracle, але просто провести еквівалентність у SQL Server). Зазвичай вам не байдуже, чи запитував спочатку повільніше і отримав більшу кількість, ніж запитуваний пізніше - якщо тільки, як кажуть документи Oracle, ви використовували послідовності як часові позначки, щоб справді відображати порядок початкового запиту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.