다음 코드가 sql2008 및 sql2000에서 실행되는 방식에는 차이가 있습니다. SQL 2000에서 결과는 정확합니다 (페치는 첫 번째 행에서 마지막 행까지 정상입니다). 반면 sql 2008에서는 가져온 것이 이상한 동작을 보입니다. (마지막으로 삽입 된 행에서 첫 번째 행까지 시작합니다. 아래 코드는 문제의 코드입니다. 아래 sql200과 sql2002 커서 차이점은 무엇입니까?
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
가 결과 SQL 2008에서 showig입니다 :
trigger: 1828
cursor id: 1837
cursor id: 1836
cursor id: 1835
cursor id: 1834
cursor id: 1833
cursor id: 1832
cursor id: 1831
cursor id: 1830
cursor id: 1829
cursor id: 1828
및 SQL 2000에서 보여주는 결과이다 : 여기서 '지역'모든 테이블이다
trigger: 1837
cursor id: 1828
cursor id: 1829
cursor id: 1830
cursor id: 1831
cursor id: 1832
cursor id: 1833
cursor id: 1834
cursor id: 1835
cursor id: 1836
cursor id: 1837
거기에는 SQL 2000과 같은 일반적인 방법으로 설정할 수있는 옵션이 있습니까? –
select 문에 "order by"를 추가하는 방법을 알고 있습니다. 그것은 sql2000 및 sql2008에서도 작동합니다. – NetSide