조회
SELECT *
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = '{테이블명}'
* 위 쿼리를 실행했을 때 결과
여기서 CONSTRAINT_NAME이 제약조건이름이고
SEARCH_CONDITION이 제약조건이다.
추가
ALTER TABLE {테이블명} ADD CONSTRAINT {제약조건명} {제약조건}
* 제약조건 예시
CHECK(COL1 IN ('A','B','C'))
"COL1" IS NOT NULL
컬럼 데이터타입이 number(float, decimal...)인 경우에는 IN (1~9)가 아니라 BETWEEN을 써야함.
CHECK(COL1 BETWEEN 1.0 AND 9.0)
*ORA-02293: ()을 검증할 수 없습니다 - 잘못된 제약을 확인합니다
참고로 추가, 수정하고자 하는 제약조건에 위반되는 데이터가 존재하면 이런 에러가 뜬다.
수정
ALTER TABLE {테이블명} MODIFY {컬럼명} {제약조건}
근데 MODIFY로는 NULL제약조건만 수정할 수 있다!!
ALTER TABLE {테이블명} MODIFY {컬럼명} NOT NULL;
ALTER TABLE {테이블명} MODIFY {컬럼명} NULL;
실제로 다른 조건을 수정하려고 하면 새로 추가되기 때문에
제약조건을 삭제하고 추가하는 방법으로 수정해야 한다.
삭제
ALTER TABLE {테이블명} DROP CONSTRAINT {제약조건명}
제약조건 이름 변경
ALTER TABLE {테이블명}
RENAME CONSTRAINT {기존 제약조건명} TO {변경할 제약조건명}
제약 활성화/비활성화
--제약 비활성화
ALTER TABLE {테이블명} DISABLE {제약조건명}
--제약 활성화
ALTER TABLE {테이블명} ENABLE {제약조건명}
'SQL > RDBMS' 카테고리의 다른 글
ORA-01722: 수치가 부적합합니다 (0) | 2023.03.17 |
---|---|
[mariaDB] 제약 조건(조회, 추가, 수정, 삭제) (0) | 2023.03.17 |
java.sql.SQLSyntaxErrorException: ORA-00911: 문자가 부적합합니다 (1) | 2023.03.14 |
[MySQL/MARIADB, MSSQL, ORACLE] DB별 예약어나 특수문자가 포함된 컬럼명 표현, 네이밍 규칙 (0) | 2023.03.14 |
BLOB데이터 들고오기(JAVA ExecuteQuery) (0) | 2022.12.17 |