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

使用备份表插入数据时timestamp非空列报错求助

解决方法

SQL Server里的timestamp(现在官方推荐用rowversion命名)是系统自动维护的列,专门用来记录行的版本号,完全不需要手动插入值——插入新行时数据库会自动生成唯一的二进制值填充这个列,而且你也没法手动给它赋值(包括NULL也不行)。

针对你的需求,正确的脚本写法分两种场景:

场景1:直接插入源表所有行(不考虑目标表已有数据)

直接在INSERT语句里省略timestamp列,数据库会自动处理:

INSERT INTO [dbo].[ZHG$Sales Order Price Scale_TEMP1] 
(
    [Order No_],
    [Buy-from Vendor No_],
    [Delivery Date (Price_Cond_)],
    [Number of Storage Spaces],
    [Price Scale Code]
)
SELECT 
    [Order No_],
    [Buy-from Vendor No_],
    [Delivery Date (Price_Cond_)],
    [Number of Storage Spaces],
    [Price Scale Code]
FROM [dbo].[ZHG$Sales Order Price Scale_TEMP]

场景2:只插入目标表中缺失的行(核心需求)

需要先判断哪些行在目标表中不存在,再插入。这里用NOT EXISTS来过滤重复行(你可以根据实际业务主键调整判断条件,下面假设Order No_和Price Scale Code是唯一标识行的组合):

INSERT INTO [dbo].[ZHG$Sales Order Price Scale_TEMP1] 
(
    [Order No_],
    [Buy-from Vendor No_],
    [Delivery Date (Price_Cond_)],
    [Number of Storage Spaces],
    [Price Scale Code]
)
SELECT 
    t.[Order No_],
    t.[Buy-from Vendor No_],
    t.[Delivery Date (Price_Cond_)],
    t.[Number of Storage Spaces],
    t.[Price Scale Code]
FROM [dbo].[ZHG$Sales Order Price Scale_TEMP] t
WHERE NOT EXISTS (
    SELECT 1 
    FROM [dbo].[ZHG$Sales Order Price Scale_TEMP1] t1
    WHERE t1.[Order No_] = t.[Order No_]
      AND t1.[Price Scale Code] = t.[Price Scale Code]
      -- 可以根据实际业务需求添加更多唯一判断条件
)

补充说明

如果你非要在INSERT列列表里写timestamp列,也可以用DEFAULT关键字,但其实完全没必要,省略列名更简洁:

INSERT INTO [dbo].[ZHG$Sales Order Price Scale_TEMP1] 
(
    timestamp,
    [Order No_],
    [Buy-from Vendor No_],
    [Delivery Date (Price_Cond_)],
    [Number of Storage Spaces],
    [Price Scale Code]
)
SELECT 
    DEFAULT, -- 让数据库自动生成timestamp值
    [Order No_],
    [Buy-from Vendor No_],
    [Delivery Date (Price_Cond_)],
    [Number of Storage Spaces],
    [Price Scale Code]
FROM [dbo].[ZHG$Sales Order Price Scale_TEMP]

不过这种写法不如直接省略timestamp列来得直观,推荐用第一种方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:31:09