我面臨的情況是,我有兩個表:A和B. B有一個外鍵到A.爲了強制執行檢查約束,在表中複製列是否是個好主意?
A有一個「Detailed」列,用於標識其B子項中是否需要其「細節「部分填寫。
如果我有我的精益結構,我無法確定B中的記錄是否需要填寫其「詳細信息」部分,即不爲空,而不加入A.因此,唯一的方法是爲我爲了防止有人插入或更新這些記錄到一個無效的狀態是有一個觸發器加入A並檢查其「詳細」列。
我的感覺是,約束優於觸發器,因爲除了過濾器外,它們更像數據的事實,而觸發器只是過濾器。
我能得到這個通過複製B中的「詳細」欄,然後有一個檢查約束(詳細=「Y」和細節IS NOT NULL)OR(詳細=「N」)
思考解決這個問題的最好方法是?
如果您將列複製到表B中,將使其與表A同步嗎?將它留在A中並使用觸發器。 – 2010-02-05 16:43:32
如果我要走這條路線,我會強制從B到A的外鍵的同步性。 – 2010-02-05 16:47:00
與FK之間的二者,那麼將不可能改變「詳細」的值。 – 2010-02-05 18:12:46