2012-01-05 56 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无法做到,据我所知。