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. エコー抑制ライブラリ?
- 3. 次のIDキーLINQ + SQLサーバー
- 4. 抑制シェルスクリプトのエラーメッセージ
- 5. 抑制のランタイムエラーが
- 6. Erlangプロセスメッセージの抑制
- 7. 抑制重複は、
- 8. 抑制Outlookのポップアップアクセス
- 9. SQL Serverのバックアップエラーメッセージを抑制する方法
- 10. SAS proc SQL文からのエラーメッセージを抑制する方法
- 11. 出力を抑制する
- 12. ダイアログへのキーストロークの抑制
- 13. 抑制マップとハイブが
- 14. CDHネットワークインターフェイス速度抑制
- 15. OpenCVの非最大抑制
- 16. iReportで抑制する
- 17. プロットのティックを抑制r
- 18. SSLエラーを抑制する
- 19. SQLサーバーの文字列の制約
- 20. 抑制偽のPHPはimap_open()注意:安全でないサーバー宣伝AUTH = PLAIN
- 21. C#Winformsテキストボックスのマウスクリックイベントを抑制する
- 22. ビジュアルスタジオでのtlbimp警告の抑制
- 23. ハンセンアプリはSMS_RECEIVEDブロードキャストを抑制します
- 24. ASP.NET/VB.NETでのコンパイラ警告の抑制
- 25. プログラムによるWindowsアラートの抑制
- 26. ユーザエージェントを抑制するmax-age = 0ヘッダ
- 27. junitテストでJOptionPane.showInputDialogを抑制する
- 28. Matlabの開始メッセージを抑制する
- 29. ajax livesearch関数を抑制する
- 30. ブラウザウィンドウの「フォーカス盗難」を抑制する
私は、テーブルを作成し、最初の99行をロードし、それらを予約済みおよび未使用としてマークする傾向があります。割り当てられていない行を追跡するために必要なのは、NULLユーザー名だけです。 OTOH、私は一般にデザインに熱心ではない。私のシステムのほとんどは、他の履歴データが意味をなされるように、つまり他のレコードを作成した人や何らかのアクションを許可したユーザーデータを永続的に保持します。ユーザーが消えると、そのアカウントには非アクティブとしてフラグが設定されます。この場合、平均的なユーザー数が常に99を超えないように制限されます。むしろ限られたリソースを割り当てたいと思います。短縮ダイヤル番号をユーザーに送信します。 – HABO