[오라클] forien key

심심이·2024년 3월 1일
0

oracle

목록 보기
20/40

자기 테이블에 있는 PK를 참조할 수 있다


create table tbl_emp
(empno    number(4)     
,ename    nvarchar2(10) not null
,jik      nvarchar2(10) not null 
,mgr_no   number(4)    -- 직속상관 번호
,constraint  PK_tbl_emp_empno primary key(empno)
,constraint  FK_tbl_emp_mgr_no foreign key(mgr_no) references tbl_emp(empno) -- 자기 테이블에 있는 primary 키를 참조할 수 있다. 
);
-- Table TBL_EMP이(가) 생성되었습니다.

insert into tbl_emp(empno, ename, jik, mgr_no)
values(1001, '나사장', '사장', null);
-- 1 행 이(가) 삽입되었습니다.

insert into tbl_emp(empno, ename, jik, mgr_no)
values(1002, '나부장', '부장', 1001);
-- 1 행 이(가) 삽입되었습니다.

insert into tbl_emp(empno, ename, jik, mgr_no)
values(1003, '나과장', '과장', 2001); -- 1001번, 1002번이 들어와야 함(직속 상관) - mgr_no(직속 상관번호)는 insert, update 값을 반드시 1001/1002번만 와야한다.
                                   -- 같은 테이블의 empno(PK,대표식별자)를 참조하는 FK 키여야 함. 
/*
오류 보고 -
ORA-02291: 무결성 제약조건(HR.FK_TBL_EMP_MGR_NO)이 위배되었습니다- 부모 키가 없습니다
*/

insert into tbl_emp(empno, ename, jik, mgr_no)
values(1003, '나과장', '과장', 1002);
-- 1 행 이(가) 삽입되었습니다.

commit;

select * 
from tbl_emp;


profile
개발하는 심심이

0개의 댓글