多列主键与自动增量

时间:2018-05-07 15:44:13

标签: sql-server clustered-index

我将两列列为主要列。

一列是INT,另一列是nvarchar(200)

现在实际上允许这样的事情:

Int  Varchar
1    FIRSTENTRY
1    SECONDENTRY
2    FIRSTENTRY
2    SECONDENTRY

我使INT列成为一个增量为1的标识。

问题是: 当我插入新列时,它总是向上计数。假设我插入了这样的列:

FIRSTENTRY
SECONDENTRY
FIRSTENTRY
SECONDENTRY

表格看起来像这样:

1 - FIRSTENTRY
2 - SECONDENTRY
3 - FIRSTENTRY
4 - SECONDENTRY

我希望它是这样的:

1 - FIRSTENTRY
1 - SECONDENTRY
2 - FIRSTENTRY
2 - SECONDENTRY

有没有一种标准方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

你不能:IDENTITY总是递增,作为复合键的一部分不起作用。

或者换句话说,没有'只有在需要避免重复的复合键时才进行自动增量。

您需要使用自定义书写逻辑自行生成重复/重复值。

<强>更新 您可能还需要考虑将两者分开:具有IDENTITY主键的EntryGroup表和具有Entry列的EntryGroupID表,该列是{{的外键。 1}}表。迟早你可能会发现EntityGroups实际上是你系统中的相关实体,如果你在这么早的阶段将它们分开,你会很高兴。