일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그리디알고리즘
- 종합설계
- 소프트웨어공학
- 모각코
- 백트래킹
- 장고
- 데이터베이스
- codetree
- DFS
- programmers
- minimum spanning tree
- django
- MyPlaylist
- SQL
- Kruskal
- 최소스패닝트리
- 코드트리
- B대면노래방
- 마라마라빔
- 파이썬
- Planned
- 프로그래머스
- BFS
- Bellman-Ford
- 알고리즘
- DP
- 동적계획법
- 실습
- 함밥
- 백준
Archives
- Today
- Total
Leta Learns
[MySQL] foreign key - on delete cascade 설정 추가 본문
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