如何在以下语句中添加外键排序顺序:
ALTER TABLE [dbo].[ActionLog]
WITH CHECK ADD CONSTRAINT [FK_ActionLog_Order] FOREIGN KEY([OrderID])
我希望OrderID降序。
答案 0 :(得分:4)
外键约束仅确保引用的表中已存在值,而不是顺序。对于参照完整性,数据库不关心数据的顺序。
确保结果集中的顺序的唯一方法是使用ORDER BY子句。
答案 1 :(得分:2)
订购外键是无稽之谈。外键是一种强制规则的方法,OrderId字段(在您的示例中)中的值必须存在于另一个表中。它与表的聚类无关(这是在表中强制执行订单的唯一方法)。
顺便说一下,你没有显示完整的陈述,因为在你的ADD CONSTRAINT语句的末尾shuold是REFERENCES table(column)
。
如果您确实希望表中的数据以OrderID顺序存储,那么您需要添加一个聚类索引,例如
CREATE UNIQUE CLUSTERED INDEX CIX_Action_log
ON Action_log (OrderID)
GO
但我必须质疑你这样做的动机。
答案 2 :(得分:0)
引用Orders(OrderId)的ActionLog.OrderID上的外键约束将要求Orders中引用的列确实形成唯一键,因此需要在引用的表<上存在某种约束或索引/ strong>之前可以首先应用外键约束。此时,您可以在引用的表上指定索引顺序。这样的约束是为了有效地从ActionLog到Orders,并且在访问ActionLog时通常没有任何/很多说法。
如果您需要通过OrderID提取ActionLog,则必须自己添加索引。