[트러블 슈팅] 8. 데이터 베이스 포린키

귤's avatar
Mar 18, 2025
[트러블 슈팅] 8. 데이터 베이스 포린키

포린키를 걸면 insert into player_tb(pname, pnumber, prole, tno) values('홍길동', 19, '1루수', 2); 이 부분이 실행 되면 안되는데 실행이 되버림

-- DDL (create, drop, alter) drop table if exists team_tb; drop table if exists player_tb; -- 1. create table -- team_tb는 부모 테이블 create table team_tb ( tno int primary key, tname varchar(10) unique, tyear int, tloc varchar(10) ) charset=utf8mb4; -- 포린키를 걸면 player_tb는 자식 테이블 create table player_tb ( pno int primary key auto_increment, pname varchar(20) not null, pnumber int, prole varchar(10) default '타자', tno int, constraint fk_player_tb foreign key (tno) references team_tb (tno) -- 포린키 거는 이유 : 제한 걸려고, 참조할려고 하는게 아님!! / 제약 조건 걸때는 이름이 필요함 ) charset=utf8mb4; insert into team_tb(tno, tname, tyear, tloc) values(1, '삼성', 1982, '대구'); insert into team_tb(tno, tname, tyear, tloc) values(2, '넥센', 2000, '서울'); insert into team_tb(tno, tname, tyear, tloc) values(3, '롯데', 1990, '부산'); insert into player_tb(pno, pname, pnumber, prole, tno) values(1, '이대호', 20, '1루수', 3); insert into player_tb(pno, pname, pnumber, prole, tno) values(2, '가득염', 10, '투수', 3); insert into player_tb(pno, pname, pnumber, prole, tno) values(3, '임수혁', 5, '포수', 3); insert into player_tb(pno, pname, pnumber, prole, tno) values(4, '이승엽', 3, '1루수', 1); insert into player_tb(pno, pname, pnumber, prole, tno) values(5, '박병호', 19, '1루수', 2); insert into player_tb(pname, pnumber, prole, tno) values('홍길동', 19, '1루수', 2); select * from player_tb;

해결

insert into player_tb(pname, pnumber, prole, tno) values('홍길동', 19, '1루수', 2); tno를 2가 아니라 4로 바꿔야 했다.
고친 문장
  • insert into player_tb(pname, pnumber, prole, tno) values('홍길동', 19, '1루수', 4);
 
Share article

gyul