Oracle

210901_오류

요옫 2021. 9. 1. 17:11

제약조건

테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러 가지 규칙을 정해 놓으 것. 

데이터의 무결성 유지를 위하여 사용자가 지정할 수 있는 성질

모든 constraint는 데이터 사전(dictionary에 저장됨

의미있는 이름을 부여했다면 constraiont를 쉽게 참조할 수 있음

표준 객체 명명법을 따르는 게 좋음.

제약조건은 테이블을 생성할 당시에 지정할 수도 있고, 테이블 생성 후 구조변경(alter)명령어를 통해서도 추가가 가능

not null 제약조건은 반드시 컬럼 레벨에서만 정의 가능

primary key(pk) : 유일하게 테이블의 각행을 식별(not null과 unique 조건 둘 다 만족)

foreign ket(fk) : 열과 참조된 열 사이의 외래키 관계를 적용하고 설정

unique key (uk) : 테이블의 모든 행을 유일하게 하는 값을 가진 열(null 허용)

not null(nn) : 열은 null값을 포함할 수 없음

check(ck) : 참이어야 하는 조건을 지정(대부분 업무 규칙 설정)

 

 

(예제)

--오류보고
--ORA-02290: 체크 제약조건(ADMIN.SAWON_CK_BUSEO)이 위배되었습니다
insert into sawon values(seq_sawon.nextval,'조예리','여자','개발부',4900000);

--제약조건 제거하기
--sawon테이블의 sawon_ck_buseo를 제거해보기
alter table sawon drop constraint sawon_ck_buseo;

--다른 부서 추가해서 제거되었는지 확인..교육부,관리부,홍보부 외
insert into sawon values(seq_sawon.nextval,'조예리','여자','개발부',4900000);
commit;

--sawon에 name컬럼에 unique 제약조건 추가해보기..실제로 name에는 unique 잘 안씀
alter table sawon add constraint sawon_uk_name unique(name);

--같은 이름 추가해보기
insert into sawon values(seq_sawon.nextval,'조예리','남자','관리부',4900000);
--오류  ORA-00001: 무결성 제약 조건(ADMIN.SAWON_UK_NAME)에 위배됩니다

'Oracle' 카테고리의 다른 글

210902_join+부모,자식테이블(예제)  (0) 2021.09.02
210901_join  (0) 2021.09.01
210901_숫자함수  (0) 2021.09.01
210901_rollup,cube  (0) 2021.09.01
210831_update,delete  (0) 2021.08.31