在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
答案 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
谢谢:)