說我有以下各表記錄的子集:添加約束至表引用的另一個表
User(user_id, name, age,...)
Job(job_id, salary, user_id)
我想有Job
的約束,使得每當工作的薪水> 20,000,用戶做這項工作的年齡必須大於等於18歲。我嘗試過CHECK
約束,但它似乎只適用於單個表格?
說我有以下各表記錄的子集:添加約束至表引用的另一個表
User(user_id, name, age,...)
Job(job_id, salary, user_id)
我想有Job
的約束,使得每當工作的薪水> 20,000,用戶做這項工作的年齡必須大於等於18歲。我嘗試過CHECK
約束,但它似乎只適用於單個表格?
你可以用一個用戶自定義功能做到這一點。該函數可以查找另一個表中的值。
我不一定建議這種方法。對於許多應用程序,我將插入/更新語句包裝在存儲過程/函數中,並將邏輯放在那裏。但是,這可能沒有觸發器。
這是正確的,檢查約束僅適用於單個表。 您必須使用觸發程序來阻止不需要的數據,請參閱觸發程序上的以下鏈接。
您需要使用定義爲在插入之前觸發的觸發器,並使用它來執行檢查並允許/禁止插入。 – jpw
檢查[此線程](http://stackoverflow.com/questions/10135754/how-to-make-a-foreign-key-with-a-constraint-on-the-referenced-table-in-postgresq?rq = 1)使用用戶定義的功能與檢查約束,這可能有助於你的情況 – Spidey
爲什麼你刪除我已經有一個答案:( –