26

私はこのSQLテーブルを持っています

CREATE TABLE Notes(
    NoteID [int] IDENTITY(1,1) NOT NULL,
    NoteTitle [nvarchar](255) NULL,
    NoteDescription [nvarchar](4000) NULL
) CONSTRAINT [PK_Notes] PRIMARY KEY CLUSTERED 
(
    NoteID ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
 ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

そして、NoteIDを含む一時テーブルからレコードをコピーしたい(SQLクエリを使用)..

これは私のスクリプトです:

SET IDENTITY_INSERT Notes OFF

INSERT INTO Notes (NoteID, NoteTitle,NoteDescription)
SELECT NoteID, NoteTitle,NoteDescription from Notes_Temp

SET IDENTITY_INSERT Notes ON

このスクリプトを使用すると、エラーが発生します。

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

SQLクエリを使用してID列を持つテーブルにレコードを挿入する他の方法はありますか?

4

3 に答える 3

41

周りのOFFとONを変える

SET IDENTITY_INSERT Notes ON

INSERT INTO Notes (NoteID, NoteTitle,NoteDescription)
SELECT NoteID, NoteTitle,NoteDescription from Notes_Temp

SET IDENTITY_INSERT Notes OFF
于 2013-05-27T05:47:20.060 に答える
8
SET IDENTITY_INSERT Notes ON

INSERT INTO Notes
/*Note the column list is REQUIRED here, not optional*/
(NoteID, NoteTitle,NoteDescription)
SELECT NoteID, NoteTitle,NoteDescription from Notes_Temp

SET IDENTITY_INSERT Notes OFF

ID 列である NoteId の値を挿入しています。独自の ID 値を指定できるように、このようにテーブルで ID 挿入をオンにすることができます。

于 2013-05-27T06:00:02.917 に答える
3

おそらく、あなたは SQL Server を使用しており (あなたは言いません)、 IDENTITY_INSERTの意味と目的を誤解しています。通常、IDENTITY カラムの値を明示的に設定することは許可されていませんが、テーブルの IDENTITY_INSERT を ON に設定することで、そのような挿入を一時的に許可できます。

于 2013-05-27T05:50:25.533 に答える