2012-03-12 41 views
0

我有下面的示例數據的數據:數據檢查

ID CID  Name   ImageLocation       Order 
1 1 Suit Jacket Content/Berwin/Content/Images/SuitJacket.jpg 1 
2 1 Trousers Content/Berwin/Content/Images/Trousers.jpg  2 
4 2 Jumper  Content/Berwin/Content/Images/Jumper.jpg  1 
5 3 Trousers Content/Berwin/Content/Images/Trousers.jpg  1 
6 4 Suit Jacket Content/Berwin/Content/Images/SuitJacket.jpg 1 

ID是PK,CID是FK和順序是在不被示出的訂單FK

順序

無論如何要強制Order列中的數字在其CID範圍內是唯一的。即當CID is 1時,我將無法插入1 or 2

回答

3

是的,這是可能的。

您可以在數據庫中添加一個新的「唯一密鑰」。

  • 在SQL Server Management Studio中,轉到您的表的設計模式。
  • 右鍵單擊>索引/鍵...
  • 添加一個新的索引/鍵
  • 其類型設置爲「唯一密鑰」
  • 添加列CIDOrder
  • 關閉對話窗口,並保存表
+0

添加唯一約束謝謝:)柯特好 – ediblecode 2012-03-12 11:19:26

2

如果您的表中有該樣本數據,並且您不希望能夠在CID = 1和order = 1或2的位置插入另一行,則可以通過添加唯一索引到那些專欄。

CREATE UNIQUE NONCLUSTERED INDEX IX_CID_ORDER ON dbo.TABLE 
    (
    CID, 
    Order 
    ) WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
GO 
2

...或者你可以在兩列

ADD CONSTRAINT CID_Order_Const UNIQUE(CID, Order) 
+0

點只增加一個約束,而不是指數,但該指數是有益的以其他方式。 – cairnz 2012-03-12 11:22:19

+0

@cairnz - 沒有這樣的事情 - SQL Server中的唯一約束*實現*作爲唯一索引。 – 2012-03-12 11:24:40

+0

是的,它純粹的語法糖 – Ben 2012-03-12 11:32:12