【发布时间】:2016-10-18 07:55:26
【问题描述】:
这与问题有些相关:SQL server identity column values start at 0 instead of 1
但我不确定这里发生了什么。我们有我们用来启动客户帐户的“空白”数据库。我们通过备份和恢复数据库来做到这一点。
客户在恢复后得到完全空白的表格。表格示例,我们所有表格的 PK 都与此一模一样:
CREATE TABLE [dbo].[RNPRatePlanStop]
(
[RatePlanStopKey] [int] IDENTITY(1,1) NOT NULL,
[RatePlanKey] [int] NOT NULL,
.....
)
插入新记录时偶尔(并非总是在所有表上) - 0 未插入 1。我不确定如何解决此问题或我做错了什么。这会导致 UI 出现问题,因为我们不指望拥有 0 键..
【问题讨论】:
-
您可以使用
truncate table [dbo].[RNPRatePlanStop]这会重置为标识列定义的种子值。使用它来截断您想要将其身份重置为默认种子的所有表。 -
我还要在这里指出,如果您的主键只是 RatePlanStopKey,则仅在其上添加 IDENTITY() 并不能保证唯一性。您可以向其中添加 PRIMARY KEY 以保证这一点。您可以参考:msdn.microsoft.com/en-us/library/ms186775.aspx 了解更多信息。但是,如果您使用的是复合键,那就另当别论了。
-
Ryan,我省略了有问题的表 DDL 的其余部分,但是是的,它是 PK。我已经找到问题了,我会给出我的答案
-
@TudorSaru,不幸的是,如果桌子上有 FK,这将不起作用。
标签: sql sql-server-2008 auto-increment identity