포린키를 걸면 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