2013-02-21 83 views
1

在SQL Server 2008 R2,我有一個簡單的表有以下的列的定義:SQL Server的奇怪重複鍵錯誤

Id (PK ,int , not null) 
MeterId (FK , int ,not null) 
InstallDate(DateTime, not null) 
Image(NVarCharMax, null) 
Number (int , not null) 
Comments(NVarChar(300), null) 

而且Id列設置爲Identity

當我運行:

insert into Transmitters (MeterId, Number, InstallDate) 
    values (952, 777 , '2013-02-21') 

我得到的重複鍵錯誤。

沒有其他發送ID爲777,

有id爲952

這開始在我的數據庫超過1臺發生一米。

任何建議將是最appriceated。

整個表腳本是:你一直

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[Transmitters](
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [MeterId] [int] NOT NULL, 
    [InstallDate] [datetime] NOT NULL, 
    [Image] [nvarchar](max) NULL, 
    [Number] [int] NOT NULL, 
    [Comments] [nvarchar](300) NULL, 
CONSTRAINT [PK_Transmitters] PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

ALTER TABLE [dbo].[Transmitters] WITH CHECK ADD CONSTRAINT [FK_Transmitter_Meter] FOREIGN KEY([MeterId]) 
REFERENCES [dbo].[Meter] ([Id]) 
GO 

ALTER TABLE [dbo].[Transmitters] CHECK CONSTRAINT [FK_Transmitter_Meter] 
GO 
+0

是對FK自參照或你對FK唯一約束? – Kermit 2013-02-21 15:45:54

+1

你可以編制整個表格,包括所有約束嗎?另外,插入此記錄時表格是否爲空?也許它已經填充並且身份正在挑選已經存在的號碼。 – Mayo 2013-02-21 15:47:15

+0

FK提供另一張表格:米。我沒有任何限制。 – 2013-02-21 15:47:40

回答

0

好,感謝球員最有幫助。

我使用檢查了我的身份當前值:

USE Name_Of_The_DB 
GO 
DBCC CHECKIDENT (‘Name_Of_The_Table’) 
GO 

這確實是一些行比 當前標識具有較高的ID值問題的原因。

Thand我插入一行來更新當前標識值:

set identity_insert YourTable ON 

--Insert my row 

set identity_insert YourTable OFF 

謝謝:)

+0

重播身份實際上更適合我:http://www.howtogeek.com/howto/database/reset-identity-column-value-in-sql-server/ – 2013-02-24 08:12:05