Добавление порядка сортировки для ограничения по ключевым словам на SQL Server - PullRequest
1 голос
/ 09 июля 2010

Как добавить порядок сортировки внешнего ключа в следующем выражении:

ALTER TABLE [dbo].[ActionLog] 
 WITH CHECK ADD CONSTRAINT [FK_ActionLog_Order] FOREIGN KEY([OrderID])

Я хочу, чтобы OrderID был убывающим.

Ответы [ 3 ]

4 голосов
/ 09 июля 2010

Ограничение внешнего ключа только гарантирует, что значения уже существуют в указанной таблице, а не в порядке. Для обеспечения ссылочной целостности базе данных не важно, какой порядок данных.

Единственный способ обеспечить порядок в наборе результатов - использовать предложение ORDER BY.

2 голосов
/ 09 июля 2010

Заказ по внешнему ключу - ерунда. Внешний ключ - это способ навязать правило, согласно которому значение в поле OrderId (в вашем примере) должно существовать в другой таблице. Это не имеет ничего общего с кластеризацией вашей таблицы (это единственный способ навести порядок в таблице).

Между прочим, вы не показали полный оператор, поскольку в конце вашего оператора ADD CONSTRAINT должен быть REFERENCES table(column).

Если вы действительно хотите, чтобы данные в вашей таблице хранились в порядке OrderID, вам нужно добавить индекс кластеризации, например

CREATE UNIQUE CLUSTERED INDEX CIX_Action_log
   ON Action_log (OrderID)
GO

Но я должен подвергнуть сомнению ваши мотивы для этого.

0 голосов
/ 09 июля 2010

Ограничение внешнего ключа для ActionLog.OrderID, ссылающегося на Orders (OrderId), потребует, чтобы столбцы, на которые есть ссылки в Orders, действительно формировали уникальный ключ, таким образом, для ссылочной таблицы должен быть какой-то тип ограничения или индекса 1002 * прежде чем вы сможете применить ограничение внешнего ключа в первую очередь. В этот момент вы можете указать порядок индексов для ссылочной таблицы . Такое ограничение предназначено для эффективного перехода из ActionLog в Orders, и, как правило, не имеет никакого / большого значения в доступе к ActionLog.

Если вам нужно получить ActionLog по OrderID, вам придется добавить индекс самостоятельно.

...