두 개의 테이블이있는 응용 프로그램에서 작업하도록 할당되었으므로 MY_TABLE_ONE
및 MY_TABLE_TWO
으로 호출합니다. 사용자가 양식에 데이터를 입력하면 데이터는 MY_TABLE_ONE
에 입력됩니다. 이이 완료되면, 데이터베이스 패키지가 기본적으로 다음과 같은 작업을 수행하는 트리거 : 최대 찾고존재하지 않는 Oracle Database 제약 조건 Violated
ORA-00001: unique constraint
(MY_SCHEMA.MY_TABLE_TWO_UK01) violated
ORA-06512: at "MY_SCHEMA.MY_PACKAGE", line 2
ORA-06512: at line 1
: 어떤 이유
DELETE FROM MY_TABLE_TWO;
INSERT INTO MY_TABLE_TWO
mto.COLUMN_ONE,
moto.COLUMN_TWO,
mott.COLUMN_THREE
FROM MY_TABLE_ONE mto, MY_OTHER_TABLE_ONE moto, MY_OTHER_TABLE_TWO mott
WHERE mto.OTHER_TABLE_ONE_UUID = moto.UUID
AND mto.OTHER_TABLE_TWO_UUID = mott.UUID;
,이 패키지의 메시지와 함께 삽입에 실패했다 MY_TABLE_TWO
의 제약 조건에는 MY_TABLE_TWO_UK01
제약 조건이 없습니다. 그러나 MY_TABLE_TWO_UK
제약 조건이있어 3 개의 삽입 된 열이 고유해야합니다. 나는 다음과 같은 쿼리를 실행하는 경우 :
SELECT mto.COLUMN_ONE, moto.COLUMN_TWO, mott.COLUMN_THREE, COUNT(*) AS COUNTER
FROM MY_TABLE_ONE mto, MY_OTHER_TABLE_ONE moto, MY_OTHER_TABLE_TWO mott
WHERE mto.OTHER_TABLE_ONE_UUID = moto.UUID
AND mto.OTHER_TABLE_TWO_UUID = mott.UUID
GROUP BY mto.COLUMN_ONE, moto.COLUMN_TWO, mott.COLUMN_THREE
ORDER BY COUNTER DESC;
를 다음 카운트 모든 것을 제약 조건을 위반하고있는 것처럼 1. 그래서 보이지 않는 수 있습니다.
누가 무슨 일이 일어나고 있는지 아이디어가 있습니까? 제약 조건 이름에 대해 01
이 어디에서 왔는지 확신 할 수 없습니다. 그리고 제약 조건을 위반 한 부분을 찾을 수 없습니다. `
이 체크 인해 제약 –
@SamHolder에 당신에게 아무것도 말하지 않을 것이다 인덱스입니다하지만 난에서 당겨입니다 MY_TABLE_ONE'. 나는 당신이'MY_TABLE_TWO'에 그들을 삽입하려고 할 때 오류를 던지고있는 중복을 찾고 있습니다. 개수가 2 이상이면 제약 조건 위반 행이 표시됩니다. –
오라클 만이 오류 메시지에서 '고유 인덱스 제약 조건 위반'과 같은 말을하기를 귀찮아하는 경우. –