自動増分プライマリキーを人為的な制限で制限することはできますか?たとえば、整数プライマリキーが特定の範囲の整数、たとえば100から999までの範囲内で、自動インクリメントであることを希望する場合は可能ですか?もしそうなら、どのデータベースサーバーソフトウェアで。私は主にMS SQL Server 2000以上に興味がありますが、他の人は興味深いかもしれません。人為的な制限で自動インクリメントの主キーを制約することはできますか?
0
A
答えて
3
はいあなたはID列、チェック制約でそれを行うことができます。あなたがたROWIDの間に隙間をしたくない場合は
CREATE TABLE test(rowid int identity(100,1) primary key)
GO
ALTER TABLE test ADD CONSTRAINT CK_test_Range
CHECK (rowid >= 100 AND rowid < 1000)
GO
INSERT INTO test default values;
GO 900
SELECT * FROM test
GO
DROP TABLE test
、それはもう少し複雑になります。
0
主キーが有効であることを確認するために、テーブルの上にチェック制約を入れてみてください:
ALTER TABLE MyTable
ADD CONSTRAINT MyPrimaryKeyConstraint
CHECK (PrimaryKey >= 100 AND PrimaryKey <= 999)
ご希望のどんなわかりやすい名前に自分のテーブル名に変更し、「MyTableという」、「MyPrimaryKeyConstraint」、および「主キー」主キーの列名に追加します。
0
DBCC CHECKIDENT
(<tablename>, RESEED, <newstart>)
を使用して開始値を変更できます。通常のCHECK制約を使用して上限を制限することができます。
2
OKこれは上記のように行うことができますが、範囲が小さいほど、範囲に達するとデータがテーブルに格納されない可能性が高いことに注意してください。ロールバックされたすべてのトランザクションまたは削除されたレコードが範囲の一部を占めることを忘れないでください。私は非常に真剣にこのようなステップを取る前に、または少なくともそれはあなたがテーブルに持っているレコードの任意の可能な数よりもはるかに大きな範囲を与えると思うだろう。
0
IDENTITY列には数字のシーケンスにギャップがあることに注意してください。未使用の番号は自動的には再利用されません。したがって、100〜999の範囲は、テーブルが正確に900行を許可するという意味ではありません。
関連する問題
- 1. コードファースト - 主キー制約
- 2. 複数の主キー制約?
- 3. 主キーと一意制約の主な違いは何ですか?
- 4. Redshift Constraints(主キーと外部キー制約)
- 5. ドロップ複合主キー制約
- 6. インデックスなしで検証制約/主キーを作成することはできますか?
- 7. 主キー制約または一意キー制約がすでに存在する列での索引の作成
- 8. SQL - 主キー、クラスタードインデックス、自動インクリメント
- 9. mysql無制限プライマリキー自動インクリメント
- 10. 2つの主キーと自動インクリメント
- 11. PostgreSQLで外部キーと主キー制約を一時的に無効にする方法はありますか?
- 12. 主キー制約違反を避ける
- 13. インターフェイスビルダーで自動レイアウト制約を移動できますか?
- 14. 動的UIScrollViewの制約範囲を制限する
- 15. MySQLの主キーの2番目の列にID(自動インクリメント)を持たせることはできますか?
- 16. NSLayoutConstraintコンテンツサイズの自動制約による制約を同時に満たすことができません
- 17. ユーザーIDとなり、主キーと自動インクリメント自己
- 18. Spring JPAの主キー制約の適用
- 19. 制限付きの制約タイプとタイプファミリーを '限定された'制約付きで使用する
- 20. SQLの主キー、インデックス、および制約
- 21. スウィフトの制約付きSKSpriteNodeの無作為な動き
- 22. SQL Server:主キー制約違反で重複キーを挿入できません
- 23. 外部キーの制約がない「キー」とは何ですか?
- 24. QWebViewで人為的にmousePressEventをトリガーすることはできますか?
- 25. プログラムの追加制約は、自動レイアウトの制約を破る
- 26. UIStackViewを制約することはできますか?
- 27. マルチサイトのカスタムモジュールを制限することはできますか?
- 28. NSNotificationのターゲットを制限することはできますか?
- 29. Googleマップをモバイルアプリケーションで自動的に開くことを制限する
- 30. なぜこの外部キー制約を追加できないのですか?
BETWEENを使用すると、読みやすくなります。「CHECK(Primary 100 BETWEEN 100 AND 999)」 – SqlRyan