SQL Server奇怪的重复键错误

时间:2013-02-21 15:44:26

标签: sql-server sql-server-2008-r2

在SQL Server 2008 R2中,我有一个包含以下列定义的简单表:

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的仪表。

这开始发生在我的数据库的多个表中。

任何建议都是最具价值的。

整个表脚本是:

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

1 个答案:

答案 0 :(得分:0)

好的,谢谢你们,你们最有帮助。

我使用以下方式检查了我的身份当前值:

USE Name_Of_The_DB
GO
DBCC CHECKIDENT (‘Name_Of_The_Table’)
GO

确实是问题的原因是某些行的Id值高于 目前的身份。

我插入了一行来更新当前的标识值:

set identity_insert YourTable ON

--Insert my row

set identity_insert YourTable OFF

谢谢:)