SQL Server 2005:IDがオンの従業員テーブルに列empidがあります。テーブルにデータを挿入中にエラーが発生しました。もしレコードが挿入されていれば、私は1から5のemp idを生成してから6番目のレコードに挿入エラーが発生します。次のレコード挿入のID値は7になります.iは6になります。レコードが挿入されている場合にのみ、IDが増分されます。
答えて
なぜあなたはそれをしたいですか?
ID列はデータベースの「内部管理値」としてのみ使用し、ビジネス上の価値はないはずです。なぜその順序にギャップがあるのが問題なのですか?
IDが正しく使用されている場合、ソフトウェアのユーザーはID値を持つ列に決して直面しません。レコードを一意に識別するために使用するだけです。
I don 'これができると思います。 ID番号が正確に順次になるようにするには、SQL ID機能を使用するのではなく、自分で生成する必要があります。
編集:失敗したトランザクションをロールバックしても、IDカウントは元に戻されません。これは設計上のものです。this other questionを参照してください。
この特定の動作が必要な場合は、ストアドプロシージャを使用してIDを生成する必要があります。あなたは本当にロールバックすることができますこの方法。しかし、現在の行動は目的別であることに留意してください。 現在のID値または次のID値を保持するmasterdataテーブルのidフィールドでロックを使用しないと、トランザクション分離と異なる読み取りレベル(ダーティーリード)が問題になります。
ギャップがある場合には、有効なビジネス上の理由はありますか?データベースが気にする必要はなく、古いレポートなどに基づいて情報を検索することでデータの整合性に重大な問題を引き起こす可能性があるため、アイデンティティ値が決して他のものに再利用されないようにする必要があります。レポートは先月に注文を表示し、顧客が重複して減額されたためにレコードの1つを削除します。次に、削除された二重化された顧客のIDフィールドを再利用します。先月のレポートでは、顧客12345を検索し、その料理人と関連するデータはSally JonesではなくJohn Smithに属していました。その人はそれを知っていません;彼女は集団を使用していることを知っています。だから、彼女は間違った情報を持っています。彼女が亡くなられた顧客を探していたのであれば、そのプロセスは、控除後に正しい顧客にリダイレクトされた可能性があります。
- 1. ValidationEngine - スペースが挿入されている場合、検証はバイパスされます
- 2. .NET:Message QueueがMongoDBに直接挿入されている場合
- 3. トランザクションのロールバックがレコードが挿入されています
- 4. ASPxGridViewの挿入が拒否されている場合
- 5. ローが挿入されていない場合の挿入方法
- 6. アクセスデータベースにレコードが挿入されていません
- 7. レコードがデータベースsqliteに挿入されていません
- 8. レコードが1つだけ挿入されています
- 9. sqliteデータベースに余分なデータが挿入されています
- 10. ケースがnullの場合、oracleが挿入されていません。
- 11. データベースに--None--プルダウンメニューが表示されている場合、他のショーデータが入力されている場合
- 12. ModalViewControllerがアニメーション化されている場合にのみ表示されます
- 13. コードが挿入されています
- 14. FormView挿入モード:e。値が入力されていない場合は、
- 15. 私のコンテンツにリンクが挿入されていない場所
- 16. MySQLテーブルにまだ挿入されていない場合は挿入してください。
- 17. LINQ to SQLのトランザクションと挿入されたレコードのIDを読み取る
- 18. 自動増分された主キーをアクセステーブルに挿入
- 19. 配列要素が挿入されている場合にのみ配列要素をプッシュする方法
- 20. チェックボックスが選択されている場合はレコードを表示
- 21. ステートメントがprintの前にのみ入力されている場合
- 22. ボタンが押されている場合の読み込み
- 23. 別のテーブルからmysqlが挿入されていない場合は、
- 24. PHPレコードがMySqlに挿入されないブログカテゴリテーブル
- 25. 新しい行が挿入された場合に警告するMySQL関数
- 26. JQuery - DIV IDが表示されている場合
- 27. 問題レコードが類似していない場合に挿入する
- 28. REDISに挿入されたレコードは保存されません
- 29. mybatisに最後に挿入されたレコードのIDを取得します
- 30. 元のレコードを見つけ、挿入されていないレコードのみを検索してください