【发布时间】:2011-11-20 22:40:49
【问题描述】:
我的主键(id、type)中有两列,id 是标识,type 是外键。 我想为 id 列设置种子,如下所示:
id type
10000 1
10001 1
10000 2
10001 2
10002 1
10002 2
10000 3
我可以通过代码(或 dml)执行此操作,但想知道是否可以在 ddl 或 SqlServer 表属性中执行此操作?
【问题讨论】:
-
您对使用触发器有一些限制吗?如果没有,您可以使用一个而不是标识列。
-
在单一类型中,是否允许序列中有空缺?
-
在当前版本的 SQL Server 中确实不支持此功能,但使用 SQL Server 2012(“Denali”),您将能够创建
SEQUENCE对象在您的数据库中,这将是完美的 - 他们分发序列号,与任何其他数据库对象完全分开。 -
@marc_s 我不确定 SEQUENCE 是否适用于这个特定目的。对于 OP,您需要为 10000、10001、10002 等中的每一个创建序列,这是不切实际的。您将无法仅在一个序列甚至一组序列中填写类型列。每次 id 列增加时,您都需要创建一个新的
标签: sql-server database-design ddl seed