Mengapa MS SQL Server URUTAN tidak memiliki parameter ORDER seperti Oracle?

9

Dalam dokumentasi CREATE SEQUENCEuntuk T-SQL , Anda dapat melihat bahwa CREATE SEQUENCEperintah tidak memiliki ORDERparameter.

Sebagai perbandingan, Oracle docs untukCREATE SEQUENCE menunjukkan opsi ORDER/ NOORDER:

ORDER

Tentukan ORDERuntuk menjamin bahwa nomor urut dihasilkan dalam urutan permintaan. Klausa ini berguna jika Anda menggunakan nomor urut sebagai cap waktu. Pesanan yang dijamin biasanya tidak penting untuk urutan yang digunakan untuk menghasilkan kunci utama.

ORDERdiperlukan hanya untuk menjamin pembuatan yang dipesan jika Anda menggunakan Oracle Database dengan Cluster Aplikasi Nyata. Jika Anda menggunakan mode eksklusif, nomor urut selalu dihasilkan secara berurutan.

NOORDER

Tentukan NOORDERjika Anda tidak ingin menjamin nomor urut dihasilkan dalam urutan permintaan. Ini standarnya.

Apakah Microsoft SQL Server memberikan kendala pemesanan yang kuat untuk SEQUENCEs? Atau apakah Microsoft tidak menganggapnya penting secara umum?

Daniel Gray
sumber
2
Dengan Oracle ini biasanya hanya masuk akal dengan RAC - sejauh yang saya tahu tidak ada yang setara dengan RAC di SQL Server. Menurut Anda mengapa Anda membutuhkannya?
a_horse_with_no_name
Saya hanya membuat program yang kompatibel dengan SQL Server. Itu menciptakan beberapa urutan, dan dalam CREATE SEQUENCEpernyataan, saya berlari ke parameter ORDER, dan saya hanya ingin memastikan bahwa itu tidak akan menjadi masalah (saya tidak yakin persis mengapa ORDERditambahkan di tempat pertama jadi saya pikir saya mungkin bertanya kalau-kalau).
Daniel Gray

Jawaban:

12

Dalam SQL Server semua nomor urut dihasilkan pada satu contoh sehingga mereka sudah dipesan secara inheren. Dan jika Anda hanya menggunakannya sebagai angka unik, toh itu tidak masalah.

Implementasi Oracle berbeda karena dalam lingkungan RAC (tidak semua implementasi Oracle), dua nomor urut dapat dihasilkan oleh dua "instance" yang berbeda (itu istilah yang salah untuk Oracle tetapi hanya menggambar kesetaraan dalam SQL Server). Biasanya Anda tidak akan peduli jika yang diminta lebih lambat dan mendapat angka yang lebih tinggi dari yang diminta nanti - kecuali, seperti yang dikatakan Oracle docs, Anda menggunakan urutan sebagai cap waktu untuk benar-benar mencerminkan urutan permintaan asli.

Aaron Bertrand
sumber