Номер строки MSSQL по первичному ключу - PullRequest
0 голосов
/ 16 октября 2018

Привет,

Есть ли способ создать column, который будет увеличен и сброшен после Primary key?

пример table A ([Code],[Type],[Line No_])

первичный ключ ([Code],[Type])

И когда я добавляю строку ([Code],[Type]), я хочу автоматически сгенерировать [Line No_] следующим образом:

[Code],[Type],[Line No_]
'U1', 0, 1000
'U1', 0, 2000
'U1', 1, 1000

что-то вроде ROW_NUMBER, но автоматически генерируется в строке вставки

1 Ответ

0 голосов
/ 16 октября 2018

Нет, вы не можете использовать оконную функцию в вычисляемом столбце.Вычисляемые столбцы должны быть скалярными значениями.Тем не менее, это идеальный вариант использования для вида.

См. Скрипту DB для кода ниже

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
...