본문 바로가기
Backend

Oracle 제약조건 종류와 사용 방법

by hammii 2025. 3. 15.

오늘은 oracle에서 지원하는 주요 제약조건의 종류와 사용 방법에 대해 알아보자.

 

제약 조건의 종류

- NOT NULL: 컬럼에 NULL 값을 허용하지 않음

- UNIQUE: 컬럼의 모든 값이 고유하도록 보장

- PRIMARY KEY: 테이블의 기본 키

- FOREIGN KEY: 다른 테이블의 기본 키를 참조

- CHECK: 지정된 조건을 만족하는 경우에만 데이터를 입력할 수 있음

 

예시

거래(TRANSACTIONS) 테이블을 예시로 만들면 아래와 같다.

 

CREATE TABLE TRANSACTIONS (
    TX_ID NUMBER NOT NULL,
    CUST_ID NUMBER NOT NULL,
    TX_APPROVAL_NO VARCHAR2(30) NOT NULL,
    PRODUCT_NAME VARCHAR2(32) NOT NULL,
    TX_TYPE VARCHAR2(8) NOT NULL,
    AMOUNT NUMBER NOT NULL,
    TX_DATE DATE DEFAULT SYSDATE,
    CONSTRAINT TX_ID_PK PRIMARY KEY (TX_ID),
    CONSTRAINT CUST_ID_FK FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER (CUST_ID) ON DELETE CASCADE,
    CONSTRAINT TX_TYPE_CHECK CHECK (TX_TYPE IN ('BUY', 'SELL')),
    CONSTRAINT TX_APPROVAL_UNQ UNIQUE (TX_APPROVAL_NO)
);

 

TX_ID: 거래 ID

CUST_ID: 고객 ID

TX_APPROVAL_NO: 승인번호

PRODUCT_NAME: 상품명

TX_TYPE: 거래 종류

AMOUNT: 금액

TX_DATE: 거래날짜

 

CUSTOMER 테이블에 있는 CUST_ID 키를 외래키로 설정하면서, CUSTOMER 테이블에 CUST_ID 가 삭제된다면 함께 삭제되게끔 DELETE CASCADE 조건을 걸어주었다.

또한 TX_TYPE_CHECK 제약조건을 선언하면서 TX_TYPE 이 'BUY'나 'SELL'이 아니라면 추가될 수 없게 해주었다.

 

제약조건 추가 & 삭제

테이블이 다 만들어진 이후에 제약조건을 추가 & 삭제 할 수 있다.

ALTER TABLE TRANSACTIONS ADD CONSTRAINT AMOUNT_POSITIVE CHECK (AMOUNT > 0);
ALTER TABLE TRANSACTIONS DROP CONSTRAINT AMOUNT_POSITIVE;

 

AMOUNT 값이 양수인지 CHECK 하는 AMOUNT_POSITIVE 제약조건을 추가, 삭제하는 예시이다.

 

 

제약조건을 상황에 맞게 잘 쓰도록 하자.

'Backend' 카테고리의 다른 글

crontab 기본 형식  (0) 2025.03.23
Spring 예외처리  (0) 2025.03.16
Mybatis if null 체크하기  (1) 2025.03.09
[ORACLE] 날짜 계산 시 INTERVAL vs ADD_MONTHS() 중 무엇이 더 적합할까 ?  (0) 2025.03.09
302 Found  (0) 2025.03.02