[SQL] 제약 조건 조회/삭제하기 !

제약 조건 조회하기

테이블에 제약 조건을 설정하면 과연 시스템에 기록이 될까?

그렇다.

설정된 제약조건을 딕셔너리에 저장되는데,
이 딕셔너리를 조회하여 테이블에 설정되어 있는 제약 조건을 확인할 수 있다.

특정 테이블의 제약 조건 조회하기

SELECT 
    table_name,
    column_name,
    constraint_name
FROM 
    user_cons_columns
WHERE 
    table_name = '테이블명(대문자로)'

여기서 각 열은 다음과 같은 의미를 갖는다.

  • table_name: 제약 조건이 적용된 테이블의 이름
  • column_name: 제약 조건이 적용된 컬럼의 이름
  • constraint_name: 제약 조건의 이름

user_cons_columns 시스템 뷰를 사용하여 사용자가 소유한 특정 테이블에 설정된 제약 조건 정보를 가져오는데,
이를 위해 table_name 필드를 조건으로 사용하여 특정 테이블명을 대문자로 지정한다.

이는 Oracle에서는 대소문자를 구분하지 않기 때문에 대문자로 일치시켜줘야 한다.

특정 테이블의 특정 컬럼에 설정되어 있는 모든 제약 조건 보기

SELECT 
    constraint_name,
    constraint_type,
    table_name,
    column_name
FROM 
    user_cons_columns
WHERE 
    table_name = '특정테이블명' 
    AND column_name = '특정컬럼명';
  • constraint_name: 제약 조건의 이름
  • constraint_type: 제약 조건의 유형 (예: PRIMARY KEY, UNIQUE, CHECK 등)
  • table_name: 제약 조건이 적용된 테이블의 이름
  • column_name: 제약 조건이 적용된 컬럼의 이름

제약 조건 삭제하기

ALTER TABLE test_users
DROP CONSTRAINT users_name_fk;

이런 식으로 고객 테이블의 name이라는 외래 키 조건이 설정된 컬럼의 외래 키 제약 조건을 해제(삭제)할 수 있습니다.