【发布时间】:2017-03-22 17:20:13
【问题描述】:
我有一个应用程序,允许用户将记录插入到表中,该表的列具有定义为的唯一键索引约束
CREATE UNIQUE NONCLUSTERED INDEX [my_IDX2]
ON [dbo].[myTable] ([seq_no] ASC)
完美运行,但是在使用SSMS将不相关且成功的手动记录数据库插入同一张表后,无法通过应用添加后续记录,这是错误消息:
数据库错误代码:2601
数据库错误信息:
SQLSTATE = 23000
适用于 SQL Server 的 Microsoft OLE DB 提供程序
无法在具有唯一索引“my_IDX2”的对象“dbo.myTable”中插入重复的键行。
在我看来,解决方法是将my_IDX2 索引增加到我在手动插入期间使用的最后一个值(+1),但这可能吗?怎么样?
【问题讨论】:
-
您是否使用
sequence而不是identity? -
两者都不是。 [seq_no] 是列的名称,其中的值似乎增加了 1。当通过应用程序添加记录时,它显然会获得下一个增量。当我直接插入一条记录时,我可能会错过对索引的调用以给我下一个值。我需要以某种方式重新定义 my_IDX2 索引的下一个值,但我不知道该怎么做
-
索引不提供值。我想你一定是在谈论一个序列。
-
也许吧。是否可以调整序列以使用某个值?我的问题不在于它是身份还是序列。真正的问题是如何增加、调整、重置为不同的值或重新建立新的下一个值。
标签: sql-server indexing key constraints unique