Leta Learns

[MySQL] foreign key - on delete cascade 설정 추가 본문

Database

[MySQL] foreign key - on delete cascade 설정 추가

leta 2022. 5. 9. 16:20

 

A, B 테이블 두 개가 있고,

A 테이블의 한 튜플을 삭제했을 때 B 테이블에서도 관련 튜플이 삭제되도록 하려면 foreign key 지정을 할 때 on delete cascade를 추가해야 한다.

 

이때 상위 테이블인 A 테이블이 unique하거나 primary여야 하는데 테이블 생성할 때 이 조건을 넣어주지 않았기 때문에 이 부분부터 수정해주어야 했다.

문법은 아래와 같다. (주석은 실제 사용한 쿼리)

ALTER TABLE A
ADD UNIQUE (A_Id);

#ALTER TABLE account ADD UNIQUE (account_number);

 

 

이후에 B테이블에 on delete cascade 설정을 추가해주면 되는데,

위에서 unique 설정 추가 작업을 하지 않고 B테이블을 수정하려다 보니 문법이 틀렸다고 해서 그냥 B테이블을 지웠었다.

그래서 B 테이블을 처음부터 다시 생성하였다.

이때 foreign key와 on delete cascade 설정을 하였다.

 

예시 쿼리문 만들기 번거로워서 참고한 링크를 첨부한다. https://www.mysqltutorial.org/mysql-on-delete-cascade/

#참고한 링크의 sql 쿼리문 (B 테이블)
CREATE TABLE rooms (
    room_no INT PRIMARY KEY AUTO_INCREMENT,
    room_name VARCHAR(255) NOT NULL,
    building_no INT NOT NULL,
    FOREIGN KEY (building_no)
        REFERENCES buildings (building_no)
        ON DELETE CASCADE
);

#실제 사용한 쿼리문
create table depositor (
customer_name char(30),
account_number char(20) not null,
foreign key (account_number) references account(account_number)
on delete cascade);

 

 

 

이 작업을 마치고 상위 테이블에서 튜플을 삭제하면 관련된 튜플이 하위 테이블에서도 삭제된다.

'Database' 카테고리의 다른 글

AWS RDS 구축, RDS 외부 접속  (0) 2022.04.03
h2 database 이전 버전 다운로드 (Archive Downloads)  (1) 2022.01.02
Comments