sql >> データベース >  >> RDS >> Sqlserver

シーケンスとアイデンティティ

    ここで答えが見つかると思います

    列のID属性を使用すると、自動インクリメント番号(主キーとしてよく使用される)を簡単に生成できます。 Sequenceを使用すると、挿入中にatable列にアタッチできる別のオブジェクトになります。 Identityとは異なり、列値の次の数値はディスクからではなくメモリから取得されます。これにより、SequenceはIdentityよりも大幅に高速になります。これは次の例で確認します。

    そしてここに:

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

    そしてここにも:

    SQL Serverシーケンスオブジェクトは、SQLテーブルのID列と同じように番号のシーケンスを生成します。ただし、シーケンス番号の利点は、シーケンス番号オブジェクトが単一のsqltableに制限されないことです。

    また、msdnでは、使用法とその必要性について詳しく読むことができます(ここ):

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

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

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

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



    1. MYSQLiエラー:ユーザーにはすでに「max_user_connections」を超えるアクティブな接続があります

    2. シーケンス値を1にリセット

    3. コミットされたトランザクションをロールバックする

    4. 更新された行を取得