2012-11-01 28 views
2

鑑於我有一個表結構,其中我有一個父母可以有「角色」,並且該父母有可以具有相同的「角色」的子級,我如何在子表上創建一個驗證父類沒有即將插入的角色的約束?SQL Server:唯一的約束來驗證數據不存在於另一個表

像這樣:

Parent 
| 
\- ParentRoles 
| 
\- Child 
    | 
    \- ChildRoles 

我希望孩子和家長角色的工會是唯一的角色(無重複)的列表。

我檢查了Constraint by UserFunction(不推薦,但會工作),並嘗試創建一個唯一的索引視圖,但遇到了麻煩,因爲我必須在視圖中使用聯合,然後我不能索引它。

關於Constraint by UserFunction問題的一個答案建議使用外鍵,但我不明白我如何使我的表結構的工作。

回答

0

如何在子表上創建一個約束來驗證父類沒有 即將插入的角色?

你不能 - 約束不能很容易的。我會用觸發器去。

+0

約束不一定意味着SQL Server約束,它可以是任何形式的數據庫功能。我只是想讓數據庫確保插入的數據是正確的。 –

+0

那麼,你知道單詞「背景」? 「在約束條件下將數據限制在sql server中」意味着相當殘暴的sql服務器約束。無論如何,只需使用觸發器即可。 – TomTom