2016-08-18 52 views
0

我有一個表(a)應該有一個列「user_id」,這是其他表(b)或(c)的外鍵。 因此,它指向表b或c(只有一個,而不是兩個)。MySQL:是否可以爲兩個不同的表格列創建外鍵?

這甚至可能在MySQL?我能拿出最好的事情是以下(但你可以看到,我有「user_ID的」在我的「一」 - 表兩次,這是不是很好,因爲這兩個值中的一個將永遠是空的。

enter image description here

非常感謝你!

+0

爲什麼不呢?只要你使用不同的鑰匙,你可以 – Mojtaba

+0

謝謝你的回覆。請看上面的附圖。問題:是否可以將「user_id_a」和「user_id_b」合併到表「tbl_a」的一個列/字段中? – Tream

+0

沒有。這是針對ACID的。實際上,你必須保持你想要'xor'運算符b或c但不能同時運行的方式 – Mojtaba

回答

0

嗨這就是所謂的多態關聯和使用MySQL外鍵約束你不能強制執行。

爲了要麼userId_a null或user_id_b空,你可以創建一個檢查約束條件

CONSTRAINT CHECK (user_id_a IS NOT NULL OR user_id_b IS NOT NULL) 
相關問題