ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL_Constraint Enable / Disable
    Data Base_Oracle/SQL 2020. 1. 6. 21:43

    § 제약조건 활성화 / 비활성화

    ※ Data Dictionary

    로그인 상태에서 작업한 내용이 전부 테이블 형태로 기록됨
    Oracle 자체에서 제공하는 기능이며, System Table에 저장됨

    • user_XXX : 로그인한 계정들로 조회 가능
      ex) desc user_constraints
    • dba_XXX : 관리자만 조회 가능
    • all_XXX : 관리자 / 일반 계정 조회 가능

    # 예제

    제약조건 테이블 구조 확인 _ scott 계정
    [ SQL> desc user_constraints ]

    이름 널? 유형
    ... ... ...
    CONSTRAINT_NAME
    제약조건 이름
    NOT NULL VARCHAR2(30)
    CONSTRAINT_TYPE
    제약조건 종류
      VARCHAR2(1)
    TABLE_NAME
    테이블 이름
    NOT NULL VARCHAR2(30)
    STATUS
    제약조건 활성화 상태
      VARCHAR2(8)
    ... ... ...

    emp테이블의 제약조건 이름, 종류, 테이블 이름, 제약조건 상태 조회 _ scott
    [ SQL> select constraint_name, constraint_type, table_name, status
    from user_constraints where table_name=upper('&table_name');
    table_name의 값을 입력하십시오: emp ]

    CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME STATUS
    PK_EMP P(rimary key) EMP ENABLED
    FK_DEPTNO R(eferences) EMP ENABLED

    ※ ENABLED : 작동 중 / DISABLED : 비작동 중

    § 제약조건 활성화 / 비활성화 형식

    [ SQL> alter table 수정table명 enable / disable constraint 제약조건이름 ]

    # 제약조건 활성화 / 비활성화 예제 _ test1 계정

    제약조건 비활성화
    [ SQL > alter table b_prtest disable constraint B_PRTEST_CK_AGE;
    select constraint_name, status from user_constraints where status='DISABLED'; ]

    CONSTRAINT_NAME STATUS
    B_PRTEST_CK_AGE DISABLED

    제약조건 활성화
    [ SQL > alter table b_prtest enable constraint B_PRTEST_CK_AGE;
    select constraint_name, status from user_constraints
    where constraint_name='B_PRTEST_CK_AGE'; ]

    CONSTRAINT_NAME STATUS
    B_PRTEST_CK_AGE ENABLED

    제약조건 활성화/비활성화 방법에 대해 알고 있으면 제약조건을 무조건 삭제하기보다,

    불필요할 때는 비활성화를 해 두었다가 필요할 때 다시 활성화할 수 있을 것입니다.

    댓글

Designed by Tistory.