2016-05-20 2 views
1

Я пытаюсь вставить данные в локальную объявленную таблицу. В таблице есть первичный ключ IDENTITY, поэтому, когда я хочу вставить значение с помощью определенного первичного ключа, я должен использовать SET IDENTITY_INSERT ON.Почему SQL не нашел мои объявленные переменные

Однако заявление SET не находит мою локальную таблицу.

DECLARE @testtable TABLE (
    [row_id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY 
) 

SET IDENTITY_INSERT @testtable ON 

INSERT INTO @testtable VALUES (234) 

Но я получаю следующее сообщение об ошибке:

Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '@testtable'.

И совет:

Incorrect syntax near '@testtable'. Expecting '.', ID or QUOTED_ID.

ответ

2

INSERT into an identity column is not allowed on table variables.

Использовать временную таблицу вместо:

CREATE TABLE #testtable(
    [row_id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY); 

SET IDENTITY_INSERT #testtable ON; 

INSERT INTO #testtable(row_id) VALUES (234); 

LiveDemo

+1

Великий LiveDemo а (я искал SQL-сервер) – Markus