mun dev

[Oracle] 오라클 제약 조건 변경 (생성, 추가, 삭제) 본문

DB/Oracle

[Oracle] 오라클 제약 조건 변경 (생성, 추가, 삭제)

mndev 2024. 2. 16. 13:56

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;