首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止用户删除记录

问如何防止用户删除记录
EN

Stack Overflow用户
提问于 2015-12-02 10:01:05
回答 1查看 69关注 0票数 1

假设我有三个表,名为“类别”、“子类别”和“prodcut”,该表的结构如下

代码语言:javascript
复制
           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,但我无法理解解决这个问题的正确方法。请帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 10:04:02

您需要使用外国钥匙和限制引用选项:

代码语言:javascript
复制
alter table `subcategory` add foreign key (`Catid`) references `category`(`Catid`) on update cascade on delete restrict

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

代码语言:javascript
复制
Cannot delete or update a parent row: a foreign key constraint fails

产品表也是一样的:

代码语言:javascript
复制
alter table `product` add foreign key (`SubCatid`) references `subcategory`(`SubCatid`) on update cascade on delete restrict
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34039807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档