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 *的结果然后按照自然顺序排序。
任何想法为什么这样的行为?以及如何摆脱它。 谢谢