3

これが私の db のスクリプトです。

CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Code] [nvarchar](25) NULL,
[Name] [nvarchar](25) NULL,
[dob] [date] NULL ,
 CONSTRAINT [PK_MyTable] 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]

を挿入すると、このエラーが発生しました

Cannot insert explicit value for identity column in table 'MyTable' when   
IDENTITY_INSERT is set to OFF.

どうすれば解決できますか?

4

2 に答える 2

13

データを挿入するときに、データベースを作成したままにするのではなく、ID 列に明示的な値を割り当てようとしています。

あなたは次のようなことをしています:

insert into MyTable (Id, Code, Name, dob) VALUES (1, 'XXX', 'xxx', 'xxx', somedate)

それ以外の

insert into MyTable(Code, Name, dob) VALUES ('xxx', 'xxx', somedate)
于 2013-06-13T05:01:43.467 に答える
7

Rafeel が示唆しているように、列に明示的にinsert値を指定する必要はありません。ただし、行を削除して同じ値Identityの行が必要な場合。ID次に、次のことができます。

SET IDENTITY_INSERT MyTable ON

insert into MyTable (Id, Code, Name, dob) 
VALUES (OldIdValue, 'XXX', 'xxx', 'xxx', somedate)

SET IDENTITY_INSERT MyTable OFF
于 2013-06-13T05:46:06.473 に答える