Подтвердить что ты не робот

Запись INSERT в SQL-таблицу с столбцом IDENTITY

У меня есть эта таблица 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-запрос).

это мой script:

SET IDENTITY_INSERT Notes OFF

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

SET IDENTITY_INSERT Notes ON

с этим script, я получаю сообщение об ошибке:

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

существует ли другой способ вставки записей в таблицу с столбцом идентификации с использованием SQL-запроса?

4b9b3361

Ответ 1

Измените 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

Ответ 2

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

Вы вставляете значения для NoteId, который является столбцом идентификации. Вы можете включить идентификационную вставку в таблице так, чтобы вы могли указать свои собственные значения.

Ответ 3

Предположительно, вы используете SQL Server (вы не говорите) и неправильно поняли смысл и назначение IDENTITY_INSERT. В общем случае вам не разрешено явно указывать значение столбца IDENTITY, но, установив для IDENTITY_INSERT значение ON для таблицы, вы можете временно разрешить такие вставки.