Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 문자열
- Queue
- Programmers
- lv2
- 프로그래머스 자바
- index of
- 백준
- Stack
- COS Pro
- 스프링부트 도커 배포
- 프로그래머스
- lv0
- 이진수 변환
- 버퍼
- 큐
- Lv1
- 스프링부트 도커로 배포
- 프로그래머스 풀이
- java
- 스택
- 오름차순 정렬
- 프로그래머스 문자열 정렬
- 스프링부트 도커
- 클라이언트
- StringTokenizer
- SWEA
- 자바
- 백준 N과 M 자바
- 삼각형의 완성조건
- 알고리즘
Archives
- Today
- Total
mun dev
[Oracle] 오라클 제약 조건 변경 (생성, 추가, 삭제) 본문
1. 제약조건(CONSTRAINT)
제약조건은 결점 없이 정확하고 유효한 데이터가 데이터 베이스에 저장될 수 있도록 하기 위하여 데이터를 조작하는데 한계를 규정한 것
- CONSTRAINT뒤에 제약조건 ID를 부여할 수 있다.
- CONSTRAINT를 생략할 시 제약ID를 자동으로 오라클 시스템에서 생성해준다
1) 테이블 생성시 제약조건
CONSTRAINT 제약id 제약내용(컬럼명);
2) 제약 변경
제약조건을 주지 않아 추가하거나, 제약 조건을 변경, 삭제 하는 경우 ALTER
명령문을 이용하여 변경 가능
- 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약이름 제약조건;
- 수정
ALTER TABLE 테이블명 MODIFY 컬럼조건;
- 삭제
ALTER TABLE 테이블명 DROP CONSTRAINT 제약이름;
2. 제약 비활성화
- 제약 비활성화는 제약조건을 삭제하지 않고도 제약 조건을 비활성화하여 사용을 잠시 보류할 수 있도록 하는 기능
- 제약 조건이 설정되면 항상 그 규칙에 따라 데이터 무결성이 보장, 특별한 업무를 수행하는 과정에서 이러한 제약조건 때문에 작업이 진행되지 못하는 경우에는 제약 조건을 비활성화 하여 작업을 처리한 후 다시 제약조건을 활성화할 수 있다.
-- 제약 비활성
ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건;
-- 제약 활성
ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건;
3. CASCADE
- 데이터베이스 내의 임의의 다른 테이블과 PRIMARY KEY 또는 FOREGIN KEY로서의 관계가 여전히 존재하는 경우 PRIMARY KEY가 존재하는 테이블을 마음대로 제거 및 비활성화 할 수 없다.
- 즉, 부모 테이블과 자식 테이블 간에 참조 설정이 되어 있을 때 부모 테이블의 제약 조건을 비활성화 시키면서 이를 참조하고 있는 자식 테이블 의 제약 조건까지 함께 비활성화시키기 위해 사용한다.
- 또한 부모 테이블만 삭제하고 싶을 경우, 원래는 자식 테이블을 먼저 삭제하고 부모를 삭제한 뒤 자식 테이블을 다시 만들어야 하는 번거로움이 따른다.
- 하지만,
CASCADE
를 쓰면 일시적으로 참조 관계를 끊을 수 있다.
-- 강제로 참조관계를 끊고 부모 테이블을 삭제하는 법
DROP TABLE 테이블명 CASCADE CONSTRAINTS;
-- 강제로 참조관계를 끊고 부모테이블의 제약조건을 비활성화 하는 법
ALTER TABLE 테이블명 DROP 제약조건 CASCADE;
'DB > Oracle' 카테고리의 다른 글
[PL SQL] 프로시저(PROCEDURE) 사용법 (0) | 2024.02.27 |
---|---|
[PL SQL] PL SQL이란? PL SQL 블록(BLOCK)의 구조 (1) | 2024.02.27 |
[Oracle] 오라클 테이블 구조 변경 (수정, 추가, 삭제) (0) | 2024.02.16 |
[Oracle] 오라클 RANK, DENSE_RANK(순위함수) (0) | 2024.02.15 |
[Oracle] 오라클 WITH절 사용법 (0) | 2024.02.07 |