728x90

[오라클] 테이블 생성/변경시 제약조건(Constraint)


테이블을 생성/변경할 때 제약조건을 설정할 수가 있으며, 제약조건이란 테이블의 해당칼럼에 올바른 데이터만 입력받고 잘못된 데이터는 들어오지 못하도록 정하는 규칙이다.

- 제약조건은 테이블 Level 및 컬럼 Level 에서 규칙을 적용한다.

- 제약조건은 종속성이 존재할 경우 게시물 삭제를 방지한다.

- 테이블에서 행이 삽입, 갱신, 삭제될 때마다 테이블에서 규칙을 적용한다.

- 테이블 생성과 동시에 지정할 수도 있고, 테이블 생성 후에 추가할 수도 있다.

- 제약조건은 user_constraints 데이터 딕셔너리에서 검색할 수 있다.


제약조건의 종류


 조건 이름

의 미 

 NOT NULL

 조건이 설정된 칼럼에는 NULL 값이 입력되지 못한다 

  - 컬럼 Level 에서만 지정 가능

 Primary Key

 테이블당 1개만 설정 가능하며, 보통 자동으로 인덱스를 부여한다.

 NOT NULL + Unique 의 의미 

 중간 레코드(행)을 삭제해도 신규로 삭제되는 값은 Max(no) + 1 이다.

 Unique

 조건이 설정된 칼럼에는 중복된 값이 입력되지 못한다. 

  - NULL 값 저장 가능

  - 복합 칼럼 지정시에는 테이블 Level 에서만 가능

 Foreign Key

 다른 테이블의 칼럼을 참조해서 무결성 검사를 한다. 

 - ON Delete Cascade : 제약조건에 의해 참조되는 테이블(부모테이블)의 행이 삭제되면
   해당 행을 참조하는 테이블(자식테이블)의 행도 같이 삭제되도록 한다.
 - ON Delete Set NULL : 제약조건에 의해 참조되는 테이블(부모테이블)의 행이 삭제되면
   해당 행을 참조하는 테이블(자식테이블)의 행을 NULL 로 설정한다.

 Check

 이 조건으로 설정된 값만 입력을 허용하고 나머지는 거부된다. 


제약조건 정의 방법

1. 테이블 Level 지정 방법

   - 테이블 칼럼 정의와는 별개로 정의한다.

   - NOT NULL 제약조건을 제외한 모든 제약조건 정의가 가능하다.

2. 칼럼 Level 지정방법

   - 한개의 칼럼에 한개의 제약조건만 정의 가능하다.

   - 모든 제약조건 정의 가능하다.



블로그 이미지

Link2Me

,