데이터베이스 분류
제약조건(constraint)를 위반하는 행(row) 알아내기
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 5,972 조회
- 0 추천
- 목록
본문
제약조건(constraint)를 위반하는 행(row) 알아내기
아래의 예에서는 제약조건인 primary key를 disable하고 데이터들을 삽입한 후,다시 primary key제약조건을 enable했을 경우에 대해 알아본다.enable이 실패했을 경우 어떠한 이유로 실패했는지 파악하고 이를 해결하는 방법을 알아본다.
SQL> create table test 2 ( 3 name varchar2(10), 4 age number(2) 5 );
테이블이 생성되었습니다.
SQL> alter table test 2 add constraint test_name_pk primary key(name);
테이블이 변경되었습니다.
SQL> insert into test values('강명규', 26);
1 개의 행이 만들어졌습니다.
SQL> insert into test values('홍길동', 30);
1 개의 행이 만들어졌습니다.
SQL> alter table test 2 disable constraint test_name_pk;
테이블이 변경되었습니다.
SQL> @?/rdbms/admin/utlexcpt
테이블이 생성되었습니다.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- CHAINED_ROWS TABLE EXCEPTIONS TABLE PLAN_TABLE TABLE S_CUSTOMER TABLE S_DEPT TABLE S_EMP TABLE S_IMAGE TABLE S_INVENTORY TABLE S_ITEM TABLE S_LONGTEXT TABLE S_ORD TABLE S_PRODUCT TABLE S_REGION TABLE S_TITLE TABLE S_WAREHOUSE TABLE TEST TABLE
16 개의 행이 선택되었습니다.
SQL> desc exceptions
이름 Null? 유형
------------------------------- -------- ----
ROW_ID ROWID
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
CONSTRAINT VARCHAR2(30)
SQL> insert into test values('', 27);
1 개의 행이 만들어졌습니다.
SQL> alter table test 2 enable constraint test_name_pk 3 exceptions into exceptions; alter table test * 1행에 오류: ORA-02437:
SQL> select * from exceptions;
ROW_ID OWNER TABLE_NAME CONSTRAINT
------------------ ------------------------------ ------------------------------ ------------------------------
AAAAfGAAFAAAACeAAA KANG TEST TEST_NAME_PK
AAAAfGAAFAAAACeAAC KANG TEST TEST_NAME_PK
SQL> select e.constraint, x.name 2 from exceptions e, test x 3 where e.row_id=x.rowid;
CONSTRAINT NAME ------------------------------ ---------- TEST_NAME_PK 강명규 TEST_NAME_PK 강명규
SQL> select * from test;
NAME AGE ---------- ---------- 26 홍길동 30 27
SQL> delete from test where age=27;
1 행이 삭제되었습니다.
SQL> alter table test 2 enable constraint test_name_pk;
테이블이 변경되었습니다.
"무단배포금지: 클라우드포털(www.linux.co.kr)의 모든 강좌는 저작권에 의해 보호되는 콘텐츠입니다. 무단으로 복제하여 배포하는 행위는 금지되어 있습니다."
관련자료
-
이전
-
다음
댓글 0
등록된 댓글이 없습니다.