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;