У меня есть эта таблица в моей базе данных SQL Express 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
) я получаю набор результатов, упорядоченный в соответствии со 2-м столбцом (Col2)
Я бы ожидал, что он (естественно) будет упорядочен по столбцу PK (который фактически является порядком вставки записей)
Фактически, если вы удалите уникальное ограничение из Col2, это то, что вы получите.
И все становится еще более загадочным, когда вы сохраняете ограничение уникальности и добавляете в эту таблицу 3-й столбец (любого типа), поскольку затем результат SELECT * сортируется в соответствии с естественным порядком.
Есть идеи, почему такое поведение? И как от этого избавиться.
Спасибо