Там нет встроенного механизма для этого.
Вы можете добавить столбец lines int
в таблицу HEADER, которая содержит количество строк в заголовке, по умолчанию 0.
Когда вы вставляете запись в строки, вы должны использовать HEADER.lines + 1 для LineId и увеличивать HEADER.lines на 1.
Вы можете сделать это с помощью своего приложения с помощью триггера для вставок на Линии.
В любом случае учитывайте, что удаление на линиях прерывает последовательность.
create table header
(
headerid int identity (1,1) constraint header_pk_headerid primary key
,headername varchar (20)
,lines int not null default (0)
)
create table lines
(
lineid int not null
,headerid int not null constraint lines_fk_headerid references header(headerid)
,linename varchar (20)
,constraint lines_pk_headerid_lineid primary key (lineid, headerid)
)
go
create trigger lines_trg_ins
on lines
instead of insert
as
declare @lines table (headerid int,lines int)
update h
set h.lines = h.lines + i.lines
output deleted.headerid,deleted.lines into @lines
from header as h
join (select headerid,count(*) as lines from inserted group by headerid) as i
on i.headerid = h.headerid
insert into lines (lineid,headerid,linename)
select row_number() over (partition by i.headerid order by getdate()) + l.lines,l.headerid,i.linename
from inserted i join @lines l on l.headerid = i.headerid
insert into header (headername) values ('header1'),('header2')
insert into lines (headerid,linename) values (1,'header1 line1'),(1,'header1 line2'),(1,'header1 line3'),(2,'header2 line1'),(2,'header2 line2')
select * from header
+----------+------------+-------+
| headerid | headername | lines |
+----------+------------+-------+
| 1 | header1 | 3 |
+----------+------------+-------+
| 2 | header2 | 2 |
+----------+------------+-------+
select * from lines order by headerid,lineid
+--------+----------+---------------+
| lineid | headerid | linename |
+--------+----------+---------------+
| 1 | 1 | header1 line1 |
+--------+----------+---------------+
| 2 | 1 | header1 line2 |
+--------+----------+---------------+
| 3 | 1 | header1 line3 |
+--------+----------+---------------+
| 1 | 2 | header2 line1 |
+--------+----------+---------------+
| 2 | 2 | header2 line2 |
+--------+----------+---------------+
Большое спасибо, вы мне очень помогли! – Alina