我的问题是关于删除数据库中的数据。我的数据库有 4 个表:
- 类别
- 话题
- 副主题
物品
该表有一个引用该表
Topic
的外键 ( )CategoryID
Category
- 该表有一个引用该表
Subtopic
的外键 ( )TopicID
Topic
- 该表有一个引用该表
Item
的外键 ( )SubtopicID
Subtopic
我想知道什么时候我想删除一个类别我应该怎么做?非常感谢。
我的问题是关于删除数据库中的数据。我的数据库有 4 个表:
物品
该表有一个引用该表Topic
的外键 ( )CategoryID
Category
Subtopic
的外键 ( )TopicID
Topic
Item
的外键 ( )SubtopicID
Subtopic
我想知道什么时候我想删除一个类别我应该怎么做?非常感谢。
如果要删除相关表中的所有依赖行,可以进行级联删除。级联删除将从父表以及子表中删除该行。如果您需要自动删除多级的所有关系,请为您的数据库风格搜索“cascade all”语法。
如果您有on delete cascade
,如果您删除一个类别,它将删除所有引用该类别的主题,反过来,所有引用已删除主题的子主题都将被删除。与物品相同。
如果您on delete restrict
在其中一个表上,您将收到一条错误消息,指出由于引用约束而无法删除该类别。
您可以使用适当的 sql 语句或从您的 dbms UI 更改级联的行为。
如果我没看错(破碎的、不清楚的英语),您将不得不删除 , 中的数据ITEM
,SUBTOPIC
以及TOPIC
最终指向您的表的引用的CATEGORY
表。或者,您必须删除参考。
Cascade
当您删除 table 上的某些内容时将起作用Category
。引用表 Category 的 child 上的任何记录也将被删除。
这是定义它的简单示例
ALTER TABLE Courses
ADD FOREIGN KEY (CategoryId)
REFERENCES Categories(CategoryPK)
ON DELETE CASCADE;