2017-04-02 16 views
-2

這裏的情況是,我使用postgresql設置了一個數據庫。在我的數據庫中,我有一個聯盟和一些與聯盟有關聯的球隊,我如何設置一個可以與特定聯盟關聯的球隊的最低人數?postgresql限制給定表可用的外鍵數

+0

您不可能指定最小值。 – zerkms

+2

即使你可以制定一個數據庫約束(每個聯盟必須有N支球隊),那麼你如何將球隊添加到新的聯盟,假設N大於1?像這樣的數據庫約束會以許多意想不到的方式讓生活變得困難 –

回答

0

您不會將其設置爲約束條件。相反,您可以將其設置爲級別的標誌。國旗將指定是否有足夠的球隊讓聯賽活躍起來。

維護標誌的一種方法是每次插入,刪除或更新團隊時都使用觸發器來更新值。

1

可以用觸發器做到這一點。當增加一隊(INSERT版),刪除(DELETE d)或UPDATE d以更改隊伍時,BEFORE觸發器應根據更改類型爲新隊和/或老隊鎖定相關聯賽隊列。

然後一個AFTER觸發做了COUNT查詢舊和/或新的聯盟,以檢查滿足約束條件和RAISE S上的異常,如果事實並非如此。

您需要一個字段來標記聯盟「活躍」或「非活動」,其中約束只在活動時才被檢查,否則您永遠無法創建前幾個團隊。