この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 12386|答える: 0

[出典] SqlServerは新たに挿入されたレコードのIDを実装します

[リンクをコピー]
掲載地 2016/06/15 11:45:40 | | |

出典:インターネット 著者:不明

- データベースとテーブルの作成

データベース作成 MyDataBase

MyDataBaseを活用してください

create table mytable

id int 同一性(1,1),

名前ヴァルハル(20)



--このSQLを実行して、挿入されたレコードに対応する自己増分列の値を調べます

mytableの値('Li Si')に挿入

セレクト@@identity

2. 三つの方法の比較

SQL Server 2000には、SCOPE_IDENTITY、IDENT_CURRENT、@@IDENTITYの3つの類似機能があり、いずれもIDENTITY列に値を挿入します。

IDENT_CURRENT 任意のセッションおよびスコープにおいて、特定のテーブルに対して生成された最後の識別値を返します。 IDENT_CURRENT 範囲やセッションに制限されるのではなく、指定されたテーブルによって制限されます。 IDENT_CURRENT 任意のセッションおよびスコープで特定のテーブルで生成された値を返します。

@@IDENTITY 現在のセッションのすべてのスコープで生成された任意のテーブルの最後の識別値を返します。

SCOPE_IDENTITY 現在のセッションで最後に生成された値と、現在のスコープ内の任意のテーブルを返します

SCOPE_IDENTITYと@@IDENTITYは、現在のセッション内の任意のテーブル内で生成された最後の識別値を返します。 しかし、SCOPE_IDENTITYは現在のスコープに挿入された値のみを返します。 @@IDENTITY 特定の範囲に限定されません。

例えば、INSERTトリガーが定義されているT1とT2のテーブルが2つあります。 T1に行を挿入すると、トリガーが作動し、T2に行が挿入されます。 この例は、トリガーの結果としてT1とT2にそれぞれ1つずつの2つのスコープを示しています。

T1とT2の両方にIDENTITY列がある場合、@@IDENTITYとSCOPE_IDENTITYはT1のINSERT文の最後に異なる値を返します。

@@IDENTITY 現在のセッションの任意のスコープに挿入された最後のIDENTITY列の値を返します。これはT2に挿入された値です。

SCOPE_IDENTITY()はT1に挿入された同一性値を返します。これは同じスコープ内で最後に挿入されたINSERTです。 SCOPE_IDENTITY()関数が、識別列への挿入文がスコープで行われる前に呼び出されると、関数はNULL値を返します。

IDENT_CURRENT('T1')とIDENT_CURRENT('T2')が返す値は、それぞれ2つのテーブルの最後の自己増分値です。

AJQCの実験:(40ローカルスレッド、40+40リモートスレッドを同時に同時テスト、1200W行挿入)、結論は次の通りです:

1. 典型的なカスケード用途において。 @@IDENTITYは使用できず、CII850、256M SDマシンで1Wを複数行接続すると同時競合が発生することがあります。 P42.8Cと512M DDRでは、6000本以上の回線しかない場合に同時接続の競合が発生しています。

2.SCOPE_IDENTITY()は完全に信頼性が高く、ストレージプロセスで使用できます。トリガーの作成も不要で、並行的な競合もありません

SELECT IDENT_CURRENT(「TableName') - 指定されたテーブルで生成された最後のラベル値を返します

SELECT IDENT_INCR('TableName') - 指定されたテーブルのマークされたフィールドインクリメント値を返します

SELECT IDENT_SEED(「TableName」)- 指定されたテーブルのマークされたフィールドシード値を返します

最後に挿入されたレコードの自動番号を返します

SELECT IDENT_CURRENT(「TableName」)

次の自動番号に戻る:

SELECT IDENT_CURRENT(「TableName」)+(SELECT IDENT_INCR(「TableName」))

SELECT @@IDENTITY - 現在のセッションのすべてのテーブルで最後にマークされた値を返します








先の:SQLServerは文字列分割の普遍的な手法を実装しています
次に:有用な検索成果物を共有しましょう
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com