1. ホーム
  2. sql

[解決済み] 塩基配列と同一性

2023-02-28 02:40:05

質問

SQL Server 2012 を導入しました。 Sequence が導入されました。Oracle や Postgres と同じです。IDよりもシーケンスが優先されるのはどこでしょうか?また、なぜシーケンスが必要なのでしょうか?

どのように解決するのですか?

私はあなたがあなたの答えを見つけると思います ここで

<ブロッククオート

カラムの identity 属性を使用すると、簡単に自動インクリメントの数値を生成することができます。 自動インクリメントの数値(これは主キーとしてよく使われます)を簡単に生成できます。また シーケンスでは、挿入時にテーブルのカラムにアタッチできる別のオブジェクトになります。 テーブルのカラムにアタッチできる別のオブジェクトになります。IDとは異なり、カラムの値に対応する次の番号はメモリから取得されます。 カラムの値に対する次の番号は、ディスクからではなく、メモリから取得されます。 これにより、Sequence は Identity よりも大幅に高速になります。これについては このことは、今後の例で見ていきます。

そして ここで :

<ブロッククオート

シーケンス シーケンスは、SQL Server コミュニティから何年も前から要求されていたもので、今回のリリースに含まれています。 のコミュニティから何年も前から要求されていたもので、今回のリリースに含まれています。シーケンスは、数値のシーケンスを生成するユーザー定義のオブジェクトです。 オブジェクトで、数値のシーケンスを生成します。以下は を使用した例です。

はここで も同様に

<ブロッククオート

SQL Serverシーケンスオブジェクトは、SQLテーブルのIDカラムと同じように SQLテーブルのIDカラムと同じように しかし、シーケンス番号の利点は しかし、シーケンス番号の利点は、シーケンス番号オブジェクトは、単一のSQLテーブルで制限されていないことです。 テーブルに限定されないことです。

また、msdnでは、使い方や必要な理由についての詳細が書かれています ( はこちら ):

シーケンスは、ユーザが定義したスキーマバインドオブジェクトで 数値のシーケンスを生成するオブジェクトです。 数値のシーケンスを生成します。数値のシーケンスは を昇順または降順で生成し、要求に応じて循環(反復)させることができる。 要求に応じて循環(繰り返し)する。シーケンスは、IDカラムとは異なり、テーブルとは関連しない。 テーブルとは関係ありません。アプリケーションはシーケンスオブジェクトを参照し を参照し、次の値を受け取ります。シーケンスとテーブルの関係は テーブルとの関係は、アプリケーションによって制御されます。ユーザーアプリケーションは シーケンスオブジェクトを参照し、複数の行やテーブルにまたがる値のキーを調整することができます。 複数の行やテーブルにまたがる値のキーを調整することができます。

シーケンスは、テーブルとは独立して、CREATE SEQUENCEステートメントを使用することで、テーブルとは別に作成されます。オプションにより、インクリメントを制御することができます。 最大値、最小値、開始点、自動再起動機能、パフォーマンスを向上させるための 機能、およびパフォーマンスを向上させるためのキャッシングを制御できます。オプションの詳細については CREATE SEQUENCEを参照してください。

行が挿入されたときに生成されるIDカラム値とは異なり、アプリケーションは次のシーケンス番号を 行を挿入する前に、アプリケーションは次のシーケンス番号を取得することができます。 NEXT VALUE FOR関数を呼び出すことで、行を挿入する前に次のシーケンス番号を取得することができます。シーケンス番号は、NEXT VALUE FORが呼び出されたときに割り当てられます。 がテーブルに挿入されない場合でも、NEXT VALUE FORを呼び出すとシーケンス番号が割り当てられます。 がテーブルに挿入されない場合でも、NEXT VALUE FORを呼び出すとシーケンス番号が割り当てられます。NEXT VALUE FOR関数は、列のデフォルト値として使用することができます。 は、テーブル定義における列のデフォルト値として使用することができます。使用方法 sp_sequence_get_range を使用して、複数のシーケンス番号の範囲を一度に取得します。 一度に複数のシーケンス番号の範囲を取得するには sp_sequence_get_range を使用してください。

シーケンスは任意の整数データ型として定義することができます。データ型が指定されない場合 が指定されない場合、シーケンスのデフォルトはbigintです。