MS SQL ServerのシーケンスにOracleのようなORDERパラメータがないのはなぜですか?


9

ドキュメントのCREATE SEQUENCET-SQLのため、あなたがいることを確認できCREATE SEQUENCEコマンドには、持っていないORDERパラメータを。

比較のためにCREATE SEQUENCEORDER/のNOORDERオプション示すOracleのドキュメント

ORDER

ORDERシーケンス番号が要求順に生成されることを保証することを指定します。この句は、シーケンス番号をタイムスタンプとして使用する場合に役立ちます。通常、主キーの生成に使用されるシーケンスでは、保証順序は重要ではありません。

ORDEROracle DatabaseをReal Application Clustersで使用している場合、順序付けられた生成を保証するためにのみ必要です。排他モードを使用している場合、シーケンス番号は常に順番に生成されます。

NOORDER

NOORDER要求順にシーケンス番号が生成されることを保証しない場合に指定します。これがデフォルトです。

Microsoft SQL ServerはSEQUENCEsに強い順序付け制約を提供していますか?それともマイクロソフトはそれを一般的に重要とは考えていませんか?


2
Oracleでは、これは通常、RACでのみ意味があります-私が知る限り、SQL ServerのRACに相当するものはありません。なぜそれが必要だと思いますか?
a_horse_with_no_name

SQL Serverと互換性のあるプログラムを作成しています。それはいくつかのシーケンスを作成し、CREATE SEQUENCEステートメントでORDERパラメーターに遭遇しました、そしてそれが問題にならないことを確認したかっただけです(ORDERそもそもそれが最初に追加された理由が正確にわからないので、私は思った念のために尋ねるかもしれません)。
ダニエルグレイ

回答:


12

SQL Serverでは、すべてのシーケンス番号が単一のインスタンスで生成されるため、すでに固有の順序になっています。また、それらを一意の数値として使用している場合は、特に問題にはなりません。

RAC環境(すべてのOracle実装ではない)では、2つのシーケンス番号が2つの異なる「インスタンス」によって生成される可能性があるため、Oracleの実装は異なります(これは、Oracleの誤った用語ですが、SQL Serverでの同等性を示しています)。通常、最初に要求されたものが遅くて、後で要求されたものよりも大きい数になったかどうかは気にしません-Oracleドキュメントが言うように、シーケンスをタイムスタンプとして使用して、元の要求の順序を正確に反映している場合を除きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.