2016-01-16 68 views
0

說我有以下各表記錄的子集:添加約束至表引用的另一個表

User(user_id, name, age,...) 
Job(job_id, salary, user_id) 

我想有Job的約束,使得每當工作的薪水> 20,000,用戶做這項工作的年齡必須大於等於18歲。我嘗試過CHECK約束,但它似乎只適用於單個表格?

+3

您需要使用定義爲在插入之前觸發的觸發器,並使用它來執行檢查並允許/禁止插入。 – jpw

+0

檢查[此線程](http://stackoverflow.com/questions/10135754/how-to-make-a-foreign-key-with-a-constraint-on-the-referenced-table-in-postgresq?rq = 1)使用用戶定義的功能與檢查約束,這可能有助於你的情況 – Spidey

+0

爲什麼你刪除我已經有一個答案:( –

回答

2

你可以用一個用戶自定義功能做到這一點。該函數可以查找另一個表中的值。

我不一定建議這種方法。對於許多應用程序,我將插入/更新語句包裝在存儲過程/函數中,並將邏輯放在那裏。但是,這可能沒有觸發器。