일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 벤쿠버 렌트
- 벤쿠버렌트
- 파이도 환불
- 리눅스
- 데이터의 무결성
- Lesson3
- 1463번
- 캐나다워홀
- 백준알고리즘
- FLEX5
- 레노보노트북
- 자바
- QA엔지니어
- IntelliJ
- 프로그래머스
- FK 설정
- binaray_gap
- FIDO 환불
- database연결
- 언마운트
- Lesson2
- Java
- codility
- 설탕문제
- Linux
- 외래키설정
- BC렌트
- 엔테크서비스
- 부산입국
- 벤쿠버집구하기
- Today
- Total
대충이라도 하자
FK 외래키의 존재, 설정 이유 (cannot add or update a child row: a foreign key constraint fails) 본문
FK 외래키의 존재, 설정 이유 (cannot add or update a child row: a foreign key constraint fails)
Sueeeeee데이터베이스에 표를 만들다보면, PK를 설정하는 이유는 확실히 이해했는데
FK 외래키는 그냥 다른 표를 참조한다고만 생각하고 정확하게 깨닫지 못했던 것 같다.
사실 다른 표 참조하는 것도, JOIN으로 가능한데 왜 굳이 해야하는 걸까 의문을 가지고 있었는데...
얼마 전, 또 다른 표를 만들다 보니 데이터의 무결성임을 깨달았다.
사실 데이터의 무결성이라고 하면 직관적으로 이해가 되지 않으니 아래 표를 통해 알아보자.
데이터베이스에 위와 같은 표를 참조하려고 했는데 딱히 다른 표를 참조할 필요가 없는 것 같아, 외래키를 설정하지 않았다. 표를 만들고 포스트맨으로 여러 정보를 넣어보며, 테스트를 하고 테이블을 확인했는데 아래와 같은 데이터가 들어있었다. work_id에 90, 899 같은 건 있지도 않은데 넣는 족족 검사도 안하고 그냥 저장해버림...ㅜㅜ
'개발자'라는 유저가 쓴 글은 50까지 밖에 없는데 외래키를 지정해놓지 않으니 글을 저장해놓는 표에 뭐가 들어있는지
확인도 안하고 막 들어가버린다...
그래서 다시 외래키를 지정하려고 했더니,
cannot add or update a child row: a foreign key constraing fails 라는 오류가 뜨길래 살펴보니
이미 데이터가 들어있어서 참조 추가가 불가능했다. 그래서 데이터베이스에 있던 데이터를 삭제한 뒤, 참조키를 설정했다.
alter table '테이블이름' add CONSTRAINT work_id foreign key(work_id) references 참조하려는 테이블이름(컬럼);
참조키를 추가하고 다시 넣으려고 하니, 참조한 표에 있는 데이터만 들어가게 다시 조정이 되었다!
'꼬꼬마 개발자 노트' 카테고리의 다른 글
IntelliJ 스프링에 database 연결 (0) | 2021.03.07 |
---|---|
코틀린(Kotlin) Collection (0) | 2021.01.24 |
파이썬 print 출력 ( 줄 띄움, 줄 띄움 없이) (0) | 2021.01.12 |
IntelliJ cannot find declaration to go to 문제 (0) | 2021.01.12 |
jdk 및 eclipse 다운 (0) | 2020.12.12 |