首页 > 解决方案 > SQL Server:主键上的row_number

问题描述

有什么方法可以创建column将在主键上增加和重置?

例子:

表 A([代码]、[类型]、[行号_])

主键是([Code], [Type])

当我添加一个新行时,我想像这样自动生成[Line No_]

Code   Type   Line No_
-----------------------
'U1'     0     1000
'U1'     0     2000
'U1'     1     1000

类似ROW_NUMBER但在插入行上自动生成的东西

标签: sql-serverinsertrow-number

解决方案


不,您不能在计算列中使用窗口函数。计算列必须是标量值。但是,这是视图的完美用例。

请参阅下面的代码的 DB Fiddle

create table myTable ([Code] varchar(20),[Type] int)
go

insert into myTable
values
('U1',0)
,('U1',0)
,('U1',1)
go

create view MyView 
as
select *
    ,Line_No = row_number() over (partition by [Code], [Type] order by (select null)) * 1000
from myTable
go

select * from myView

推荐阅读