插入表变量自增列中的行

3

我有如下表变量:

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 的值?


我使用了:declare @TestTable2 as table (A int identity) SET IDENTITY_INSERT @TestTable2 ON INSERT @TestTable2 (A) VALUES (1) - asd
可能是syntax error table variable的重复问题。 - Arion
3个回答

1

好的。但是我怎么插入一行呢? - asd
2
你的意思是要插入一个具有特定值的行吗?还是只是插入一个具有下一个标识值的新行?如果是后者,你只需要使用DEFAULT关键字。Insert @TestTable2 DEFAULT VALUES - Charles Bretana
只提供链接的回答? - TT.
1
此答案的链接已不再有效。Microsoft于2018年1月2日停用了Microsoft Connect。 - Ryan Wade

1
这是不可能的,SET IDENTITY_INSERT 不能用于表变量。
如果想使用 SET IDENTITY_INSERT,请尝试创建临时表并在其上使用 SET IDENTITY_INSERT
CREATE TABLE #TestTable2(A int identity)
SET IDENTITY_INSERT #TestTable2 ON

INSERT INTO #TestTable2 (A) VALUES (1)

欲知详情,请点击 这里


0

我通过将语句设置为变量,然后使用连接语句执行它们来完成任务。

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接