오늘은 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 |