2015-04-16 97 views
0

我有2個表 -觸發器作爲約束

Create Table "User" (Name, DateofBirth, CategoryId(FK)) 

Create Table Category(CategoryId(PK), MinimumAge) 

每個用戶都有分配給他們一個cateogry。我試圖創建一個規則/觸發器約束 ,強制持有該類別的人必須具有該類別的最小年齡,

有什麼建議嗎?由於

+0

好主意!學校工作? – jarlh

+0

聽起來像你已經知道你需要做什麼。我的建議是完全按照你所說的做,在用戶表上創建一個關於INSERT和UPDATE的規則,檢查傳入的值並相應地驗證它們。 雖然在很多情況下這種驗證邏輯包含在前端。將所有數據發送到數據庫通常會更快,驗證數據,收集結果,返回發現的問題,然後提醒用戶。 –

回答

1

你可以使用使用用戶定義函數的CHECK CONSTRAINT根據其類別

的UDF應該返回1,或基於合格0 /失敗的邏輯來查找年齡範圍/最小

例如

check (dbo.IsAboveMinAge(dob, categoryId) = 1) 

其中IsAboveMinAge基於所述傳遞DOB當前年齡及比較靠SELECT MinimumAge FROM Category where CategoryID = categoryId返回值)