ON DELETE CASCADE SQL, Hangi yöne Silme Oluşuyor?
Eğer bir veritabanında iki ilişkileri varsa, bu gibi:
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
);
ve ben ikisi arasında bir yabancı anahtar ilişkisi, bu gibi kurmak:
ALTER TABLE BookCourses
ADD FOREIGN KEY (Course)
REFERENCES Courses(Code)
ON DELETE CASCADE;
Sonra BookCourses
ilişki Course
niteliği Courses
ilişki Code
özniteliği başvuran görebilirsiniz.
Benim sorum bir silme silme ardarda yaptığı iki ilişkiler, ya da oluşur mu? Eğer Courses
ile ilgili bir başlık silersem, BookCourses
ilgili tüm başvuru dizilerini siler, yoksa tersi mi?
Zaman ayırdığınız için teşekkür ederim.
CEVAP
Cascade Courses
masa üzerinde bir şey sildiğinizde çalışır. Tablo için başvuru var BookCourses
tabloda herhangi bir kayıt Courses
de silinecektir.
Ama Courses
BookCourses
etkilenen kendisi masa sadece masa üzerinde değil silmek için çalıştığınızda
neden tablo Kategori CourseID
var mı? bununla ilgili sorun:
Belki bu şema halinde, yeniden yapılandırılması gerekir
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 (Course)
REFERENCES Categories(Code)
ON DELETE CASCADE;
Android SQLite kullanarak yabancı anah...
JPA 2.0 orphanRemoval=delete Cascade g...
Doctrine2 ile On delete cascade...
Hangi yöne javascript bir nesne oluştu...
Raylar Cascade silme ayarlayabilirim?...