안녕하세요 저는 더비 임베디드 테이블에 외래 키 제약 조건이 붙어 있습니다. 3 개의 테이블, 즉 객실, 패키지 및 예약이 있습니다.Derby foreign key constraint issue
룸 표 --- 방 ID | RoomName | 임대 | 설명
패키지 테이블 --- pkgId | 이름 | 요금 | 세부 사항
예약 표 --- Id | 손님 ID | pkgId | RoomId | ChkIn | ChkOut | 날짜 |
예약 테이블의 세 외래 키는 GuestID, pkgId 및 roomId입니다.
필자가 원했던 것은 각각의 테이블에없는 일부 값을 받아들이는 외래 키입니다. 예를 들어, 손님이 패키지를 가져 가지 않으면 예약 테이블의 pkgId를 0으로 만들고 싶습니다. 그러나 어떤 이유로 "테이블 'RESERVATION'에 대한 업데이트로 인해 foreign key constraint .. key (0) 위반이 발생했습니다. 그 이유는 0이 Packages 테이블의 값이 아니기 때문입니까? 이상하게도 이전 응용 프로그램에서는 문제가되지 않았습니다. Derby가 새로운 jar 파일로 뭔가를 바 꾸었습니까? 또는이 문제를 어떻게 해결할 수 있습니까? RoomId와 pkgId 둘 다 외래 키 제약 조건을 유지하면서 어떤 시점에서 예약 테이블에 0을 허용하기를 원합니다. 누구든지 나를 도울 수 있습니까? 미리 감사드립니다!
을
null
을 사용하여 어느 패키지 테이블에 새로운 레코드를 삽입한다 0, '손님이 패키지를 가져 오지 않습니다')'또는 외래 키를 제거하거나 NULL 값을 사용하십시오. 외래 키는 "외래 키 값 **은 항상 ** 참조 된 테이블에 존재해야합니다."라는 제약 조건입니다. – krokodilko새로운 행을 삽입하고 해당 행을 최종 사용자로부터 숨길 것이라고 생각합니다. 그러나 이전 Derby 버전에서 어떻게 작동하는지 잘 모르겠습니다. 고맙습니다. – Thomson