如何为2列mysql创建约束

时间:2015-12-09 01:33:54

标签: mysql

我已经创建了一个包含3个表的数据库:
产品
分类
子分类

在我的产品表中,我有一个类别和一个子类别列:

| product_name | category | subcategory|  
----------------------------------------    
| varchar      | int      | int        |

截至目前,类别列引用类别表ID,子类别列引用子类别ID。

categories列有一个id和一个category name列:

| id | category_name |
----------------------
|int | varchar       |

子类别列具有id,子类别和父列,它是引用类别(id)列的外键。

| id | subcategory_name | parent |
---------------------------------
|int | varchar          | int    |

我想知道是否有办法在产品的“子类别”列中添加约束,以便只有在父类别的合法子项中才能添加值。

如果已经回答了这个问题,请原谅我。我不知道我正在做什么的正确名称。

1 个答案:

答案 0 :(得分:0)

1 - 您可以在插入/更新子猫ID之前使用程序进行验证

2 - 或者您可以在每次交易后使用触发器

3 - 或者您可以重新设计类别和子类别表,这取决于您的类别数据的外观。

例如:

id   category_name
---- -------------
10   cat 10
1011 kid of cat 10
20   cat 20
2020 kid of cat 20

4 - 如果您不喜欢上述设计,您也可以这样设计:

id   category      parent_id
---- ------------- -----
10   cat 10         0
1010 kid of cat 10  10
20   cat 20         0
2020 kid of cat 20  20