SQL ON DELETE CASCADE,删除发生在哪一种方式?

如果我在数据库中有两个关系,就像这样:

CREATE TABLE Courses ( CourseID int NOT NULL PRIMARY KEY, Course VARCHAR(63) NOT NULL UNIQUE, Code CHAR(4) NOT NULL UNIQUE ); CREATE TABLE BookCourses ( EntryID int NOT NULL PRIMARY KEY, BookID int NOT NULL, Course CHAR(4) NOT NULL, CourseNum CHAR(3) NOT NULL, CourseSec CHAR(1) NOT NULL ); 

我build立了两者之间的外键关系,如下所示:

 ALTER TABLE BookCourses ADD FOREIGN KEY (Course) REFERENCES Courses(Code) ON DELETE CASCADE; 

然后您可以看到BookCourses关系中的“ Courses Code属性引用Code Courses关系中的Code属性。

我的问题是删除发生在两个关系中的哪一个,删除级联的方式是什么? 如果我在“ Courses关系中删除了一个元组,它是否会删除BookCourses关系中的所有引用元组,或者是否相反?

感谢您的时间。

当您删除表格Courses上的东西时,级联将起作用。 表BookCourses上任何参考表格Courses也将被删除。

但是,当您尝试在表BookCourses上删除时,只有表本身受到影响,而不在Courses

后续问题:你为什么在CourseID表上有CourseID

也许你应该把你的架构重构成这个,

 CREATE TABLE Categories ( Code CHAR(4) NOT NULL PRIMARY KEY, CategoryName VARCHAR(63) NOT NULL UNIQUE ); CREATE TABLE Courses ( CourseID INT NOT NULL PRIMARY KEY, BookID INT NOT NULL, CatCode CHAR(4) NOT NULL, CourseNum CHAR(3) NOT NULL, CourseSec CHAR(1) NOT NULL, ); ALTER TABLE Courses ADD FOREIGN KEY (CatCode) REFERENCES Categories(Code) ON DELETE CASCADE;