2012-01-05 54 views
0

考慮這些表:SQL交叉表約束

BOXES 
box_id int 
box_type enum('regular', 'special') 

ITEMS 
item_id int 
item_type enum('regular', 'special') 
item_box int (foreign key referencing box_id) 

現在,有沒有什麼辦法來創建一個約束,只允許項目進行ITEM_TYPE special屬於一個盒子box_type special或唯一項目ITEM_TYPE regular的屬於box_type的框special

謝謝。

回答

0

不確定關於mysql,但通常我認爲你只是想要一個外鍵的項目(item_type,item_box)參考框(box_type,box_id)

+0

對不起,我應該指定我也希望能夠做到相反(即只允許'特殊'被放入'正常'),這將不適用於外鍵約束在類型上,我不認爲。 – user1123312 2012-01-05 23:33:10

0

你的意思是在一個盒子裏只有相同類型的物品。你必須在你的業務邏輯層做出一些事情,RDBMS無法做到,據我所知。