изменение нумерации в столбце при добавлении строки sql

Для таблицы вида

create table Stations_in_route
(
ID_station_in_route int primary key,
ID_route int,
ID_station int,
Number_in_route int not null
)

Имеется следующий триггер, который выполняет изменение значений в столбце Number_in_route после добавления новой строки в маршрут. Список номеров в маршруте должен оставаться последовательным.

create trigger stations_in_route_after_insert on Stations_in_route
after insert
as

if exists
(select *from Stations_in_route
where Stations_in_route.ID_station_in_route not in (select ID_station_in_route from inserted)
and Stations_in_route.ID_route in (select ID_route from inserted) 
and Stations_in_route.Number_in_route in (select Number_in_route from inserted))

begin
update Stations_in_route
set Number_in_route = Number_in_route + 1
where Stations_in_route.ID_station_in_route not in (select ID_station_in_route from inserted)
and Stations_in_route.ID_route in (select ID_route from inserted) 
and Stations_in_route.Number_in_route >= (select Number_in_route from inserted where Stations_in_route.ID_route = inserted.ID_route)
end

данный триггер выдаст ошибку, если будет осуществляться вставка в один ID_route Например,

Insert into Stations_in_route values(25, 4, 11, 3),(26, 4, 10, 5)

Как исправить?


Ответы (0 шт):