下面的代碼在sql2008和sql2000上的運行方式是有區別的。在sql 2000中,結果是正確的(從第一行到最後一行的提取是正常的),而在sql 2008中,提取顯示出奇怪的行爲(從最後一個插入行開始,直到第一個行,下面是問題的代碼其中, '區域' 是任何表:sql 2008光標與sql2000的區別?
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的正常方式? – 2010-01-29 10:01:58
我知道如何爲您的選擇語句添加「order by」。它適用於sql2000和sql2008。 – NetSide 2010-01-29 10:21:15