我有以下表变量:
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)
但我收到错误(Incorret语法附近' @TableTEST2')
如何在A
列中插入值?
答案 0 :(得分: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)
答案 1 :(得分:0)
检查下面的[MSDNlink] [1]它指定了限制。
EDIT。很明显你不想插入一个特定的值(那是Identity_Insert
的用途)你想要的只是为columne A插入一个新的自动生成的值,那么你需要什么做是
Insert @TestTable2 DEFAULT VALUES
答案 2 :(得分: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;