Здесь вы затрагиваете что-то фундаментальное в реляционной модели. В целом, в базах данных нет такого понятия, как внутренний порядок. Если вы хотите получить порядок данных при просмотре таблицы, вы должны явно указать этот порядок.
Так что в общем смысле вы просите невозможного. Вы не можете просто UPDATE
таблица и получить автоматическое упорядочение любого запроса на него. Но в смысле запрос за запросом вы всегда можете поставить "ORDER BY item1ID, sortOrder
" в любой оператор SELECT
, который вы применяете к таблице.
В SQL Server 2005 вы можете написать представление и представить его своему клиенту, используя этот старый хак:
SELECT TOP 100 PERCENT
item1ID, item2ID, sortOrder -- and all the other columns
FROM YourTable
ORDER BY item1ID, sortOrder;
Существуют способы сделать такой вид обновляемым, но вам нужно исследовать его самостоятельно. Это не так уж сложно сделать.
Если вы никогда не собираетесь вставлять или изменять данные в этой таблице и если вы хотите снова импортировать данные в таблицу, вы можете определить свою таблицу с помощью идентификатора, а затем вставить свои данные в таблицу в соответствующий порядок. Тогда вы всегда будете заказывать по одному столбцу идентификации. Это будет работать, если ваш клиент всегда просматривает данные в программе, которая позволяет сортировать по одному столбцу. (Кстати, никогда не используйте для этой цели функцию IDENTITY
. Она не будет работать.)
CREATE TABLE YourTable (
SingleSortColumn INT IDENTITY(1,1) NOT NULL,
...
);
INSERT INTO YourTable (
item1ID, item2ID, sortOrder -- everything except the SingleSortColumn
)
SELECT -- all your columns
INTO YourTable
FROM yadda yadda yadda
ORDER BY item1ID, sortOrder;
Надеюсь, это полезно. Извините, если я педантичен.