1

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')

キーの重複エラーが発生します。

ID777の送信機は他にありません。

ID952のメーターがあります。

これは、私のDBの複数のテーブルで発生し始めました。

どんな提案も最も高く評価されるでしょう。

テーブルスクリプト全体は次のとおりです。

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
4

1 に答える 1

0

わかりました、あなたが最も助けてくれたみんなに感謝します。

以下を使用して、IDの現在の値を確認しました。

USE Name_Of_The_DB
GO
DBCC CHECKIDENT (‘Name_Of_The_Table’)
GO

実際、一部の行のId値が現在のIDよりも高いことが問題の原因でした。

現在のID値を更新するために行を挿入しました。

set identity_insert YourTable ON

--Insert my row

set identity_insert YourTable OFF

ありがとう :)

于 2013-02-21T16:07:32.893 に答える