テーブルからレコードの一部を削除し、それらをバックアップテーブルから挿入し直したいとします。主キー列はID列で、削除された列よりも大きな値を持っています。私は列を再植え付けることができません。 SQLサーバーで可能であれば教えてください。SQLサーバーのID列に最大値未満を挿入します。
2
A
答えて
2
これを行う前に、このテーブルに挿入する他のプロセスがないこと、またはIDENTITY
が無効になっているときにエラーを受け取る可能性があることを確認してください。または、transaction with the isolation levelに設定した内容をSERIALIZABLE
に変更して、他のプロセスからの同時変更を防ぐこともできます。
- テーブル/列の
IDENTITY
を無効にします。 - バックアップからINSERT文を実行する場合は、
IDENTITY
列の値を指定してください。 - テーブル/列の
IDENTITY
を再度有効にします。
SQL:
SET IDENTITY_INSERT <your_table> OFF
-- Exceute Inserts
SET IDENTITY_INSERT <your_table> ON
ノート
あなたはおそらく、トランザクションに包まれたあなたの挿入を実行する必要があります。そうすれば、失敗があればすべてをロールバックできます。アイデンティティが常に増分されるので、削除されたレコードを再度追加しても問題は発生しないので、競合は発生しません。あなたが完了したら、あなたはPK上のあなたのインデックスの断片化をチェックしたいかもしれません。
関連する問題
- 1. 列の最大値を同じ列に挿入しますか?
- 2. IDが最大のデータベーステーブルに値を挿入する方法
- 3. SQL ID値を取得して別の列に挿入する
- 4. 最大幅が420ピクセル未満のブラウザのクリックイベントのIDを変更します。
- 5. 列の最大値と最小値を検索し、最初の列のSQLサーバーを更新します
- 6. 最後に挿入された値のIDを返します。SQL
- 7. 数値の最大値(16,8)のSQLサーバー?
- 8. O(n^3)未満の最大フローアルゴリズム
- 9. SQL適切な列IDに挿入
- 10. SQLサーバーがこのエラーをスローする理由:NULL値を列 'id'に挿入できません。
- 11. 同じ値を列に挿入して「SQLを挿入」
- 12. SQLは最大値に基づく条件を満たします
- 13. SQLサーバーにタイムスタンプを挿入
- 14. SQLサーバー - バックスラッシュを含む文字列レコードを挿入します。
- 15. 配列の2D値をSQLに挿入
- 16. 列を別の+1 PL/SQLの最大値にしますか?
- 17. バルク挿入SQLサーバー
- 18. SQLクエリ最大ID
- 19. 長い文字列でRedisタイムアウト(最大512 MB未満)
- 20. カサンドラ:値を挿入して平均/最小/最大を更新
- 21. 最後のIDを持つリレーショナルデータをSQL Server 2008に挿入
- 22. SQLサーバー複数の行を挿入し、int列をインクリメントする
- 23. vb.net sqlが最後に挿入したID
- 24. SQL - 挿入する前に各値のIDを見つける
- 25. SQLサーバーのパフォーマンス - 挿入
- 26. SQLサーバーの挿入トリガー後
- 27. SQL:最大値は最大
- 28. sqlは更新文の文字列に行のIDを挿入します
- 29. 列 'ID'のテーブルにNULL値を挿入できません。
- 30. Django - 最後の挿入ID
間違いなく可能です。あなたのSQLの一部と、あなたが得ているエラーを投稿してください。 –
私はあなたが既存の最大値よりも小さい値に再シードすることはできないと思っています。 IDENTITY_INSERTは、igorの回答のように使用してください。 – Paparazzi