检查约束以确保创建唯一ID

时间:2016-03-12 22:07:35

标签: sql-server

我正在尝试为RaceId创建一个检查约束,以确保id包含2个字母(比赛所在国家的前两个字母),然后是从1000开始的下一个可用数字

1 个答案:

答案 0 :(得分:0)

我担心您无法检查1000"中的下一个可用号码。"检查约束不能访问除了要检查自身的字段值之外的任何内容。

我想你更愿意添加一个插入触发器,它会自动正确地插入行插入时,从国家/地区代码中设置RaceId的值加上唯一的数字

如果您坚持仅使用约束,您可能希望从数据模型的角度考虑这一点。您有两个数据 - 国家/地区和比赛号码 - 存储在一个字段中。相反,有一个单独的国家/地区字段,并使用外键到单独的国家/地区表,以确保不能输入无效的国家/地区符号。然后对种族id号进行唯一约束以使其唯一,并使用检查约束来确保它总是大于1000.(此raceid列也可以是自动增量列,这样它会自动获得其下一个值。)

查询数据时,只需将国家/地区符号和竞赛ID连接到您选择的一个字段。