2
我有這個表在我的SQL Express 2005數據庫:的SQL Server 2005:自然排序順序與唯一約束兩列的表
CREATE TABLE [dbo].[test_sort_order](
[Col1] [int] IDENTITY(1,1) NOT NULL,
[Col2] [nchar](50) COLLATE French_CI_AS NULL,
CONSTRAINT [PK_test_sort_order] PRIMARY KEY CLUSTERED
(
[Col1] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UQ_test_sort_order] UNIQUE NONCLUSTERED
(
[Col2] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
當運行反對平坦的SQL查詢(通常SELECT * FROM test_sort_order
)我得到根據第二列(Col2)排序的結果集
我期望它能夠(自然地)對PK列進行排序(事實上這是記錄插入的順序) 實際上,如果你從Col2中刪除了唯一的約束,這就是你得到的。
當你保持唯一約束並且向該表添加第三列(任何類型)時,事情變得更加神祕,因爲SELECT *的結果然後按照自然順序排序。
任何想法爲什麼這樣的行爲?以及如何擺脫它。 謝謝