Jeśli mam dwie relacje w bazie danych, na przykład:SQL ON DELETE CASCADE, w jaki sposób występuje usunięcie?
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
);
i ustanowienia relacji klucza obcego między nimi, tak:
ALTER TABLE BookCourses
ADD FOREIGN KEY (Course)
REFERENCES Courses(Code)
ON DELETE CASCADE;
Następnie można zobaczyć, że atrybut Course
w relacji BookCourses
odwołuje się do atrybutu Code
w relacji .
Moje pytanie brzmi, kiedy usunięcie występuje w jednym z dwóch relacji, w jaki sposób kaskada usuwania? Jeśli usunę krotkę z relacji Courses
, czy usunie ona wszystkie krotki odnośników w relacji BookCourses
, czy jest odwrotnie?
Dziękuję za poświęcony czas.
Ciekawe tylko dlaczego 'stół Categories' ma' CourseID' jako klucz podstawowy, podczas gdy 'stół Courses' ma' EntryID'. Musisz poważnie przemyśleć swoje wybory dotyczące nazewnictwa. –
Proszę podać prawidłowe nazwy użytkowników, aby uniknąć pomyłek i wyraźnej struktury DB. –