장애 정보
| 장애 번호 | 701380b |
| 현상 | PK/UNIQUE 제약이 USING INDEX로 제약 컬럼보다 컬럼이 많은 non-unique 인덱스를 사용하는 부모 테이블에서, 제약에 속하지 않은 인덱스 컬럼만 UPDATE해도 참조하는 자식 행이 있으면 TBR-10009 (foreign key exists)가 발생한다. 참조키는 변경되지 않았으므로 UPDATE가 성공해야 한다. |
| 원인 | 부모 테이블의 참조키(PK/UNIQUE 제약 컬럼) 값 변경 여부를 판단하는 로직에서, 인덱스 키 전체를 비교하여 변경된 것으로 오인하는 문제가 있었다. 이로 인해 참조키 값은 변경되지 않았으나 인덱스의 다른 컬럼이 변경된 경우에도 불필요하게 자식 테이블의 참조 행 존재 여부를 검사하게 되어 오류가 발생한다. 이는 제약 컬럼과 인덱스 구성에 대한 이전의 전제 조건이 변경되면서 발생한 것으로, 판단 기준을 참조키 컬럼에 맞게 수정하여 불필요한 검사를 방지한다. |
| 해결 | PK/UNIQUE 제약이 재사용하는 인덱스의 컬럼 순서가 제약과 다르거나 한 인덱스에 여러 제약이 있는 경우에도 FK 검사가 올바르게 동작하도록 수정하였습니다. |
| 발생시점 | 26.09.22. |
| 패치필요버전 | 7FS02PS |
패치 정보
| 패치명 | FS02PS_701380b |
| 메이저 버전 | 7 |
| 마이너 버전 | FS02PS |
| 버전 제목 | using index로 제약과 인덱스 컬럼 구성이 다른 PK/UNIQUE의 FK 검사 오류 수정 |
| 배포가능일 | 26.09.29. |
| 호환성 | • TAC 롤링 패치: 가능 • TSC 롤링 패치: 가능 • 백업 데이터 호환: 가능 • 프로토콜 호환: 가능 • 데이터 포맷 호환: 가능 |
| AP 영향도 | • 플랜 변경 여부: 아니오 • 결과 값 변경 여부: 예 • SQL 문법 변경 여부: 아니오 • 시스템 오브젝트 변경 여부: 아니오 • 기존 기능 변경 여부: 아니오 |
| 파라미터 | - |
| 우회방안 | - |