自動遞增主鍵是否受人爲限制限制?例如,如果我只希望整數主鍵來自特定的整數範圍,比如說在100到999之間,並且自動遞增,那麼這是可能的嗎?如果是這樣,在哪個數據庫服務器軟件上。我主要對MS SQL Server 2000或更高版本感興趣,但其他人可能會很有興趣知道。是否可以使用人爲限制限制自動遞增主鍵?
0
A
回答
3
是的,你可以用一個標識列和檢查約束,做到這一點:
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
如果你不希望的rowid之間沒有任何間隙,它變得更復雜一點。
0
嘗試把檢查約束對錶,以確保主鍵是有效的:
ALTER TABLE MyTable
ADD CONSTRAINT MyPrimaryKeyConstraint
CHECK (PrimaryKey >= 100 AND PrimaryKey <= 999)
更改「MyTable的」你的表名,「MyPrimaryKeyConstraint」你會喜歡的任何描述性的名稱,和「的PrimaryKey」到主鍵的列名稱。
0
您可以使用DBCC CHECKIDENT
(<tablename>, RESEED, <newstart>)
更改起始值;您可以使用普通的CHECK約束來限制上限。
2
確定您可以如上所示做到這一點,但請注意,範圍越小,越可能達到無法將數據放入表格的點,因爲已達到範圍。並且記住每個回退的事務或已刪除的記錄佔用了該範圍的一部分。在採取這樣的步驟之前,我會非常認真地考慮一下,或者至少給它的範圍遠遠大於表中所有可能的記錄數。
0
請記住,IDENTITY列可以在數字序列中有空位。未使用的號碼不會自動重複使用。所以100到999的範圍並不意味着你的桌子將准許900行 - 它可能比那少一些。
相關問題
- 1. 是否可以限制Bookmarklet?
- 2. 遞增限制或循環限制
- 3. mongodb 3.0是否增加了主鍵索引限制?
- 4. 是否可以限制我自己的移動應用程序?
- 5. 是否有可能增加SpiderMonkey中的遞歸限制?
- 6. Mysql。限制$ x1,$ x2。是否可以限制$ x2,$ x1?
- 7. 是否使用「限制1」加快對主鍵的查詢?
- 8. 是否可以限制模板?
- 9. 是否可以限制Parallel.ForEach的內核?
- 10. 使用saveToCassandra時自動遞增主鍵()
- 11. MySQL用戶自動增量權限限制
- 12. 是否可以將API限制爲僅限一個Web界面/應用程序?
- 13. Silverstripe - FieldSet和FormAction限制?增加限制?
- 14. 堆棧大小的最大使用限制是否有限制?
- 15. 是否可以限制外部進程的CPU使用率?
- 16. 是否可以限制Amazon S3使用的帶寬?
- 17. 是否可以使用OSMBonusPack獲取速度限制數據?
- 18. 使用C#/ C++,是否可以限制網絡流量?
- 19. 您可以使用的.animate()的數量是否有限制
- 20. 是否可以使用ipaddress限制訪問?
- 21. UITextView滾動 - 人工限制
- 22. 電報內聯機器人 - 是否可以限制爲一個超級組?
- 23. PL SQL觸發器的大小限制是否限制爲32Kb?
- 24. 是否可以限制滑塊在滾動條上的距離?
- 25. 是否可以限制哪些程序可以啓動wpf應用程序?
- 26. 在繪製圖之前是否可以查詢軸限制?
- 27. 是否可以將ToRecipient partylist限制爲Account and Contact?
- 28. MS Access ADODB.recordset字符限制是2036!?這可以增加嗎?
- 29. 限制人們可以在foswiki中使用的變量數量
- 30. SQL - 有沒有什麼辦法可以使用自動遞增主鍵?
使用BETWEEN可能會更容易閱讀:「CHECK(PrimaryKey BETWEEN 100 AND 999)」 – SqlRyan 2009-07-29 16:26:10