Вы не указываете предложение ORDER BY
в операторе выбора, которое определяет ваш курсор. Без ORDER BY
порядок строк в наборе результатов является недетерминированным.
Это относится и к SQL 2000, и к 2008 году - по сути, это совпадение того, что порядок строк такой, какой они есть.
EDIT
Я создал тест на SQL 2008 с пакетом обновления 1 (SP1), включая предложение ORDER BY
, добавленное OP при первом редактировании, и не могу воспроизвести описанное поведение:
create table area
(id int)
GO
create trigger tr on area for insert as
declare @id int
select @id = id from inserted
print 'trigger: ' + convert(varchar(50), @id)
declare c cursor scroll for select id from inserted order by id
open c
fetch next from c into @id
while @@FETCH_STATUS = 0
begin
print 'cursor id: ' + convert(varchar(50), @id)
fetch next from c into @id
end
close c
deallocate c
GO
insert area
select 10
union select 9
union select 8
union select 7
union select 6
union select 5
union select 4
union select 3
union select 2
union select 1
Я получил следующий результат
trigger: 1
cursor id: 1
cursor id: 2
cursor id: 3
cursor id: 4
cursor id: 5
cursor id: 6
cursor id: 7
cursor id: 8
cursor id: 9
cursor id: 10