2011-03-05 4 views
1
INSERT INTO SS_ALERT_EVENTS ( ALERT_ID, EVENT_ID, TIME_DURATION, ALERT_EVENT_EFFECT, DATASET_ASSIGN_RULE, KEY_FIELDS_ASSIGN_RULE, SIDE, ALERT_VALIDATION_RULE, UNIQUE_ID) VALUES ('test1', 7 , 0, 1 , NULL, '5b414c4552545f494e535452554d454e542e496e737472756d656e742049445d203a3d205b54524144455f5245504f52542e496e737472756d656e742049445d3b', -1, '5b414c4552542e416374696f6e5d203a3d20313b', 1) 
* 
ERROR at line 1: 
ORA-00001: unique constraint (ESV31SURV.PK_SS_ALERT_EVENTS) violated 

EVENT_ID 필드가 문제입니다. 하지만 어쨌든 삽입하고 싶습니다. 그러나 그 이름의 제약 조건을 없애려고하면 그런 제약이 없다고 말합니다. 또한 이러한 제약 조건은 USER_CONSTRAINTS 테이블에 표시되지 않습니다. 어떻게해야합니까?삽입시 오라클 고유 제약 조건 오류

+0

개체가 표시되지 않는다고해서 그것이 존재하지 않는다는 것을 의미하지는 않습니다. 개체가 다른 스키마에서 만들어 졌다는 것을 의미합니다. 'sys'로 로그인하고 제약 목록을 다시보십시오. – zerkms

답변

3

고유 제한 조건은 실제로 기본 키 제한 조건 일 수 있습니다. 적어도 그 이름에서 알 수 있습니다.

테이블의 기본 키를 삭제하면 잠재적으로이 기본 키에 의존하는 응용 프로그램을 손상시킬 수있는 매우 나쁜 부작용이 발생할 수 있습니다. 또한 기본 키를 삭제하기 전에 해당 테이블을 참조하는 모든 외래 키를 삭제해야합니다)

기본 키는 목적으로 작성되었으므로 맹목적으로 삭제하기 전에 해당 스키마를 만든 사람과 상담하고 기본 키가 필요하지 않은지 (다시 정의해야하는지) 확인해야합니다.

 
ALTER TABLE SS_ALERT_EVENTS 
    DROP PRIMARY KEY 

를 사용하여 PK를 삭제하려고하지만 정말 현명한 결정 인 경우 한 번 확인하시기 바랍니다

는이 모든 가졌어요!

+0

"유일한 제약 조건은 사실 기본 키 제약 조건입니다. 적어도 이름에서 알 수 있습니다."- 잘못되었습니다. 쿼리에서 한 번 더보세요. 기본 키가 아니며, ** 고유 한 ** 제한 조건입니다. – zerkms

+4

@zerkms : 기본 키 **는 ** 고유 한 제약 조건입니다. PK 제약을 위반하면 ORA-0001이 "일반적인"고유 제약을 위반하는 것처럼 보일 것입니다. 그것을 밖으로 시도하십시오 둘 다 당신에게 정확히 동일한 오류를 줄 것이다 –

+0

죄송합니다, 나는 안경이 필요합니다 :-(몇 가지 알 수없는 이유로 처음으로 제약 조건 이름'ESV31SURV.PK_SS_ALERT_EVENTS'에'PK' 접두사가 포함되어있는 것을 보지 못했습니다. +1 – zerkms