[SQL] SQL ON DELETE CASCADE, 어떤 방법을 수행하는 삭제 발생?
SQLSQL 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
);
나는이 같은 둘 사이에 외래 키 관계를 수립 :
ALTER TABLE BookCourses
ADD FOREIGN KEY (Course)
REFERENCES Courses(Code)
ON DELETE CASCADE;
그런 다음 당신이 볼 수있는 BookCourses 관계 참조에서 코스 속성이 과정과 관련하여 코드 속성.
삭제가 삭제 캐스케이드을 수행하는 방법, 두 관계 중 하나에서 발생하면 내 질문은? 나는 과정과 관련하여 튜플을 삭제하는 경우, 그것은 BookCourses 관계에있는 모든 참조 튜플을 삭제하거나 다른 방법으로 주위 것인가?
해결법
-
==============================
1.당신이 테이블 과정에 뭔가를 삭제할 때 캐스케이드 작동합니다. 테이블 과정에 참조가 테이블 BookCourses에 대한 모든 기록은 자동으로 삭제됩니다.
당신이 테이블 과정에 뭔가를 삭제할 때 캐스케이드 작동합니다. 테이블 과정에 참조가 테이블 BookCourses에 대한 모든 기록은 자동으로 삭제됩니다.
당신이 테이블 BookCourses에만 테이블에 삭제하려고 할 때 그 자체가 과정에 영향을하지 않습니다
후속 질문 : 당신은 왜 테이블 카테고리에 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;
-
==============================
2.다음은이 이전 게시물을 visting 다른 사람에 대한 간단한 예제이지만, 문제의 예를 혼동한다 :
다음은이 이전 게시물을 visting 다른 사람에 대한 간단한 예제이지만, 문제의 예를 혼동한다 :
납품 -> 패키지 (한 -> 많은)
CREATE TABLE Delivery( Id INT IDENTITY PRIMARY KEY, NoteNumber NVARCHAR(255) NOT NULL ) CREATE TABLE Package( Id INT IDENTITY PRIMARY KEY, Status INT NOT NULL DEFAULT 0, Delivery_Id INT NOT NULL, CONSTRAINT FK_Package_Delivery_Id FOREIGN KEY (Delivery_Id) REFERENCES Delivery (Id) ON DELETE CASCADE )
외래 키 Delivery_Id (패키지)가있는 항목은 FK 관계 (납품)에서 참조 된 개체와 함께 삭제됩니다.
배달이 삭제 될 때 그래서 패키지는도 삭제됩니다 참조. 패키지가 삭제되면 아무것도 어떤 배달에 발생하지 않습니다.
from https://stackoverflow.com/questions/13444859/sql-on-delete-cascade-which-way-does-the-deletion-occur by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 문 수준 트리거 대 행 수준 트리거 (0) | 2020.05.18 |
---|---|
[SQL] 그것은 DBMS의 맥락에서 정확히 BLOB 무엇입니까 (0) | 2020.05.18 |
[SQL] 데이터베이스 테이블의 ID 컬럼의 이름 지정 (0) | 2020.05.18 |
[SQL] 어떻게 상수 가득 여러 행을 선택하려면? (0) | 2020.05.18 |
[SQL] 어떻게 PHP와 MySQL과 간단한 사이트 검색을 구현하는 것이? (0) | 2020.05.18 |