如何防止用户删除记录

时间:2015-12-02 10:01:06

标签: php mysql

假设我有三个名为category,subcategory和prodcut的表,这个表的结构是

           category

 ====Catid=======CatName=====   
 |     1     |    DRESS    |
 |     2     |    FOOD     |




                  subcategory

 ====SubCatid=======SubCatName========Catid=====
 |     1     |    cake          |       2      |
 |     2     |    t-shirt       |       1      |
 |     3     |    chocolate     |       2      |
 |     4     |    shirt         |       1      |



                        product

 ====productid=======productName========SubCatid=====
 |     1        |    p1            |       2        |
 |     2        |    p2            |       1        |
 |     3        |    p3            |       1        |
 |     4        |    p4            |       2        |

现在我想让我的应用程序像这样,如果作为记录用户的子类别表上的任何类别不能删除此类别。用户必须从子类别表中删除它,之后用户可以从类别表中删除它。同时,用户也无法删除产品表中存在的子类别中的记录。我尝试使用Foreignkey,但我无法理解解决这个问题的正确方法。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

您需要将Foreign Keys与RESTRICT引用选项一起使用:

alter table `subcategory` add foreign key (`Catid`) references `category`(`Catid`) on update cascade on delete restrict

因此,如果有人试图删除具有子类别的类别,MySQL将禁止该输出并输出错误:

Cannot delete or update a parent row: a foreign key constraint fails

产品表相同:

alter table `product` add foreign key (`SubCatid`) references `subcategory`(`SubCatid`) on update cascade on delete restrict