SORU
18 Kasım 2012, Pazar


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
18 Kasım 2012, Pazar


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;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • Madeon

    Madeon

    31 Ocak 2010
  • Valdorsha

    Valdorsha

    8 Mayıs 2006