create table #customer (
id int not null primary key,
cust_name varchar(12),
oldid int null
)
insert into #customer values(1,'XYZ',null)
insert into #customer values(2,'XYZ',1)
insert into #customer values(3,'XYZ',2)
insert into #customer values(4,'ABC',null)
insert into #customer values(5,'ABC',4)
insert into #customer values(6,'DEF',null)
insert into #customer values(7,'DEF',6)
insert into #customer values(8,'DEF',7)
insert into #customer values(9,'DEF',8)
select * from #customer
-- output
id cust_name oldid
----------- ------------ -----------
1 XYZ NULL
2 XYZ 1
3 XYZ 2
4 ABC NULL
5 ABC 4
6 DEF NULL
7 DEF 6
8 DEF 7
9 DEF 8
Это симуляция, когда запись обновляется, новая запись хранит идентификатор своей старой записи.Цепочка продолжается и переходит к самой первой записи, созданной для этого клиента.
Я хочу, чтобы я выполнил команду типа
select * from #customer, где id = 3
Это должно поместить не только запись с id = 3, но и всю ее старую версию, то есть также записи 2 и 1.
select * from #customer id = 4
должен извлекать только эту запись (oldid = null)
Улучшение (необязательно): если кто-то издает комманд
, выберите * из#customer где id = 8
Я хотел бы указать, что для этого клиента существует новая запись.Как я могу это сделать?Предположим, я собираюсь использовать в приложении ASP.NET.