Sql server 在表变量的标识列中插入行

Sql server 在表变量的标识列中插入行,sql-server,Sql Server,我有下表变量: declare @TestTable2 as table (A int identity) 我试图插入一些值(例如1),而不改变上面的代码行 我一直在努力做到以下几点 declare @TestTable2 as table (A int identity) SET IDENTITY_INSERT @TestTable2 ON INSERT @TestTable2 (A) VALUES (1) 但是我得到了一个错误(“@TableTEST2”附近的语法不正确) 如何在列

我有下表变量:

declare @TestTable2 as table (A int identity)
我试图插入一些值(例如1),而不改变上面的代码行

我一直在努力做到以下几点

declare @TestTable2 as table (A int identity)



SET IDENTITY_INSERT @TestTable2 ON
INSERT @TestTable2 (A)
VALUES (1)
但是我得到了一个错误(“@TableTEST2”附近的语法不正确)


如何在列
a
中插入一个值?

检查下面的[MSDNlink][1]以指定限制

编辑。在明确您不想插入特定值(这就是
Identity\u insert
的目的)之后,您只想为列a插入一个新的自动生成的值,然后您需要做的是

 Insert @TestTable2 DEFAULT VALUES

否这是不可能的,
设置标识\u插入
不适用于表变量

如果想要使用
SET IDENTITY\u INSERT
尝试创建临时表并在其上使用
SET IDENTITY\u INSERT

CREATE TABLE #TestTable2(A int identity)
SET IDENTITY_INSERT #TestTable2 ON

INSERT INTO #TestTable2 (A) VALUES (1)

有关更多信息,请单击

我可以通过将语句设置为变量,然后使用串联语句执行它们来完成任务

BEGIN TRANSACTION;

    -- =============================================
    -- SET IDENTITY INSERT ON AND INSERT THE NEW RECORD.
    -- =============================================
    SET @STATEMENT1 = 'SET IDENTITY_INSERT ' + @TestTable2 + ' ON;';
    SET @STATEMENT2 = 'INSERT INTO ' + QUOTENAME(@TestTable2) + ' (A) VALUES (1);';
    SET @STATEMENT3 = 'SET IDENTITY_INSERT ' + @TestTable2 + ' OFF;';

    EXEC (@STATEMENT1 + @STATEMENT2 + @STATEMENT3);

COMMIT TRANSACTION;

我使用了:
declare@TestTable2 as table(一个int标识)SET identity\u INSERT@TestTable2 ON INSERT@TestTable2(A)值(1)
Okey的可能重复项。但是我怎么才能插入一行呢?你的意思是插入一个具有特定值的行吗?或者只是插入一个具有下一个标识值的新行?因为如果是后者,你只需要使用默认关键字<代码>插入@TestTable2默认值仅链接答案?此答案的链接不再有效。自2018年1月2日起,Microsoft已退出Microsoft Connect