この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
データベース&データベース
›
Microsoft SQL Server
›
SqlServerは新たに挿入されたレコードのIDを実装します
眺める:
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は文字列分割の普遍的な手法を実装しています
次に:
有用な検索成果物を共有しましょう
関連記事
•
SQLはテーブル内のすべての重複レコードデータを見つけます
•
CentOSのスーパーバイザーインストール設定
•
インターネット製品リリースのグレースケールリリース
•
Log4Net の SQLServer データベースへのログ
•
mvc キャッシュ OutputCacheプロパティの正しい使用方法VaryByParam
•
どのプロセスがファイルを占有しているかを知る方法
•
php シニアプログラマーアーキテクト面接の質問
•
CentOSはプログラムが実行されているディレクトリの場所を確認します
•
[ドメイン名知識] ドメイン名MX、A、DNS、TXT、CNAMEレコードをクエリ
•
SQLは、複数のレコードに対して空にできるフィールド固有の制約を作成します
閲覧したセクション
リソースの共有
サーバー構成
技術チャット
.Net/C#
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com