You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带主键与标识列的表变量插入报错(Msg 8101)求助

解决表变量标识列插入数据的Msg 8101错误

方法一:让标识列自动生成主键值

你的表变量中ProductID是IDENTITY(1,1)类型的标识列,会自动按规则递增生成值,无需从源表插入该列数据。修改插入语句即可解决:

DECLARE @Table4 TABLE (
    ProductID INT PRIMARY KEY IDENTITY (1,1),
    DocumentNode VARCHAR(50),
    ModifiedDate DATE
)

-- 指定插入的非标识列,让标识列自动生成值
INSERT INTO @Table4 (DocumentNode, ModifiedDate)
SELECT DocumentNode, ModifiedDate
FROM [Production].[ProductDocument]

SELECT * FROM @Table4

方法二:保留源表的ProductID值(开启IDENTITY_INSERT)

如果需要将源表的ProductID值直接插入到表变量的标识列中,必须开启IDENTITY_INSERT,同时明确指定插入的列列表:

DECLARE @Table4 TABLE (
    ProductID INT PRIMARY KEY IDENTITY (1,1),
    DocumentNode VARCHAR(50),
    ModifiedDate DATE
)

-- 开启标识列显式插入权限
SET IDENTITY_INSERT @Table4 ON;

-- 必须指定完整列列表,才能给标识列赋值
INSERT INTO @Table4 (ProductID, DocumentNode, ModifiedDate)
SELECT ProductID, DocumentNode, ModifiedDate
FROM [Production].[ProductDocument]

-- 关闭权限,避免影响后续操作
SET IDENTITY_INSERT @Table4 OFF;

SELECT * FROM @Table4

内容的提问来源于stack exchange,提问作者Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:03:30