自动递增主键是否受人为限制限制?例如,如果我只希望整数主键来自特定的整数范围,比如说在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