SQL Server 2008 R2を使用して、手動エントリシステムのユーザーの上位99 ID値を予約するユーザーテーブルがあります。私は自分のアイデンティティシードを100に設定しているので、すべての新規ユーザーには通常の動作で100+の値が与えられます。私はSET IDENTITY_INSERT
を使用してIDの指定を抑制し、この列に明示的な値を提供できることを発見しました。私が知る必要があり、MSDNから実際に理解できなかったのは、この抑制がだけが実行中のスクリプトのコンテキストに適用されるかどうかです。 (すなわち、通常の挿入PROCを呼び出すサイト上で作成された新しいユーザーは、まだ次の値> 100の自動生成されたIDが与えられます)SQLサーバーID抑制コンテキスト
4
A
答えて
6
SET IDENTITY_INSERT
はそれがは必要ありません、あなたが直接、ID値を挿入することがことができますです。したがって、たとえそれが共有設定であったとしても、あなたの "通常の" INSERTを実行すると、自動生成されたIDが得られます。
つまり、それはセッション単位の設定でもあるので、二重に安全です。
デザインに関して - 私は似たようなことをしており、問題は見られません。 「よく知られている」識別子を持つことはかなり一般的ですが、100が適切なブロックであるかどうかを判断する必要があります。可能であれば、後で非連続ブロックを開く必要はありません。私は過去に負の数を使用しましたが、予約された範囲はありませんでした。
+3
さらに、一度に1つのセッション内の1つのテーブルのみがIDENTITY_INSERTを持つことができます。http://msdn.microsoft.com/en-us/library/ms188059.aspx –
関連する問題
- 1. SQLサーバーID
- 2. SQLサーバーのトップランID
- 3. エコー抑制ライブラリ?
- 4. 次のIDキーLINQ + SQLサーバー
- 5. Fhir json - Javaアプリケーションのattributtes(例:@Value、@id)を抑制する方法
- 6. Erlangプロセスメッセージの抑制
- 7. 抑制Outlookのポップアップアクセス
- 8. 抑制シェルスクリプトのエラーメッセージ
- 9. 抑制重複は、
- 10. CSS抑制要素
- 11. 抑制のランタイムエラーが
- 12. sendgridの抑制リスト
- 13. 低速クライアントでNettyサーバーを抑制する方法は?
- 14. cppcheckインライン非適合抑制を抑制する方法は?
- 15. Entity FrameworkコアのSQLクエリーを抑制する
- 16. SQL Serverのバックアップエラーメッセージを抑制する方法
- 17. SAS proc SQL文からのエラーメッセージを抑制する方法
- 18. プロットのティックを抑制r
- 19. 出力を抑制する
- 20. ダイアログへのキーストロークの抑制
- 21. CDHネットワークインターフェイス速度抑制
- 22. iReportで抑制する
- 23. Tensorflow非最大抑制
- 24. SSLエラーを抑制する
- 25. OpenCVの非最大抑制
- 26. 抑制マップとハイブが
- 27. 抑制の警告コマンドラインスウィフトコンパイラ
- 28. SQLサーバーの文字列の制約
- 29. SQLサーバー:一意の制約の説明
- 30. Djangoモデルの 'Invalid class attribute name "id"' pylint警告を抑制する方法?
私は、テーブルを作成し、最初の99行をロードし、それらを予約済みおよび未使用としてマークする傾向があります。割り当てられていない行を追跡するために必要なのは、NULLユーザー名だけです。 OTOH、私は一般にデザインに熱心ではない。私のシステムのほとんどは、他の履歴データが意味をなされるように、つまり他のレコードを作成した人や何らかのアクションを許可したユーザーデータを永続的に保持します。ユーザーが消えると、そのアカウントには非アクティブとしてフラグが設定されます。この場合、平均的なユーザー数が常に99を超えないように制限されます。むしろ限られたリソースを割り当てたいと思います。短縮ダイヤル番号をユーザーに送信します。 – HABO