제약 조건

삼전·2023년 6월 10일
0

Oracle

목록 보기
7/15

Primary key 지정

  • ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY (필드명);

Unique key 지정

  • ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 UNIQUE(필드명);

CHECK 제약 조건

  • 범위 또는 패턴을 정의할 때 사용하는 제약 조건

  • ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 CHECK(조건);

예제1)

예제2) DEPTNO를 10,20,30,40,50,60,70,80,90에서만 설정이 가능하다

🚨에러발생: 즉, EMP테이블은 'CHECK 제약조건'에 적합하게 준수하지 않은 값을 가지고 있다!


2) EMP테이블의 COMM값 중 null 값 또는 0의 값이 CEHCK의 조건에 부합하지 않아 에러가 난다는 뜻이다.

3) 옳바른 작성문: 먼저 COMM의 값을 변경 후 CEHCK 제약 조건 실행!

FOREIGN KEY 제약

  • ALTER TABLE 외부키생성테이블 ADD CONSTRAINT 제약조건명 FOREIGN KEY(외부키컬럼) REFERENCES 참조될테이블(외부키로참조될_컬럼);
  • 🚨DEPNO를 60번으로 삽입할 경우 에러 발생! 이유는 DEPT테이블의 DEPTNO 60번이 없음

DEPT테이블

  • 🚨 DEPT테이블에서 부서 번호40번을 삭제 실행 시 에러! 이유는 EMP테이블에서 FOREIGN KEY로 참조하고 있기 때문에 제약조건에 위배

Q. 그러면 DEPT테이블의 DEPTNO를 삭제하면 외부 키로 참조하는 테이블의 DEPTNO도 지울 수 있는 방법은 ?

답은 CASCADE

  • CASCADE: 참조하고 있는 다른 테이블의 컬럼(FK)들도 같이 UPDATE 하겠다는 제약 조건
  • ALTER TABLE EMP ADD CONSTRAINT EMP_DEPTNO_FK REFERENCES DEPT(DEPTNO);
profile
풀스택eDot

0개의 댓글