2016-09-20 6 views
1

テーブルの中には、主キーとID制約を持つINT列があります。 2つの並行トランザクションが1つの行をテーブルに挿入しているとき、どちらのトランザクションがHIGHERカラム値で終了するか、後でINSERT文を実行したトランザクションか、後で終了/コミットしたトランザクションか?SQL Serverでは、insert文の実行時またはトランザクションのコミット時にID値が生成または割り当てられますか?

+1

'アイデンティティ(増分が:)正であれば、もちろん)を挿入する前に実行されたインサート(1)(2)より低いIDを有することになります'値は、行がディスクに永続化された瞬間に割り当てられます。 - トランザクションが実際に開始されたときは、データが書き込まれる瞬間に、ID値が渡されます。 –

+1

トランザクションはロールバックされてもしたがって、より低いid値は、最初に開始されたinsert文のためのものです。列が主キーであるという事実は、この質問とは無関係です。 –

+0

オクラホマ、質問を改めました。前に開始したが後で終了したトランザクションがLOWER列の値を生成する可能性があるかどうかを理解する必要があります。 – ivan

答えて

0

IDは、INSERT動作の実行中に生成されているので、

+0

は、トランザクションがコミットされたときに依存しますか?またはトランザクション・フロー内でINSERTが処理されたときに直接要求されるID値ですか? – ivan

+0

トランザクションがコミットされるかロールバックされるかは関係ありません。 ID値は、INSERT処理時に要求されます。 – Anton

関連する問題