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

SQL Server中为视图添加表中不存在的IDENTITY类型Row_ID列

解决方法

由于SQL视图无法直接创建IDENTITY(1,1)类型的列,你可以通过以下几种方式生成满足需求的唯一行标识:

1. 直接引用源表的Row_ID(优先推荐)

如果你的视图数据源就是已创建Row_ID主键的表,直接复用原表的Row_ID即可,完全匹配你需要的查询逻辑:

CREATE VIEW view_name
AS
SELECT 
    Row_ID, -- 直接使用原表的IDENTITY主键列
    -- 其他需要展示的列
FROM SPCO_PSP_test -- 替换为你的源表名称

这种方式下,视图的Row_ID和原表完全一致,你提供的NOT EXISTS查询可以直接正常执行。

2. 使用ROW_NUMBER()生成唯一递增整数

如果视图是多表关联或需要重新生成行标识,用ROW_NUMBER()函数为每行分配唯一整数:

CREATE VIEW view_name
AS
SELECT 
    ROW_NUMBER() OVER (ORDER BY 稳定排序列) AS Row_ID, -- 需指定一个稳定的排序列(如原表主键、创建时间)
    -- 其他需要展示的列
FROM 数据源表/关联语句

注意:ORDER BY必须指定,否则每次查询视图时Row_ID可能会随机变化。若无需特定排序,部分SQL Server版本支持ORDER BY (SELECT NULL),但仍建议使用实际存在的列保证稳定性。

3. 用NEWID()生成唯一GUID(非整数场景可选)

如果不需要整数类型的Row_ID,可以生成唯一标识符:

CREATE VIEW view_name
AS
SELECT 
    NEWID() AS Row_ID,
    -- 其他需要展示的列
FROM 数据源表

但此方法生成的是uniqueidentifier类型,和你表中的int类型不匹配,仅适用于无需和原表int类型Row_ID关联的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:19:55