Привет, я застрял с ограничениями внешнего ключа в моей встроенной таблице дерби. У меня есть три стола, а именно номера, пакеты и бронирование.Проблема ограничения внешнего ключа Derby
Таблица номеров --- RoomId | RoomName | Аренда | Описание
Таблица упаковок --- pkgId | Имя | Оценить | Подробности
Таблица бронирования --- Id | Гостевая | pkgId | RoomId | ChkIn | ChkOut | Дата |
Таким образом, три внешних ключа в таблицах резервирования - GuestID, pkgId и roomId.
Все, что я хотел - это внешние ключи, чтобы принимать некоторые значения, которых нет в их соответствующих таблицах. Например, я хочу сделать pkgId в таблице резервирования равным 0, если гость не принимает пакеты. Но по какой-то причине я получаю ошибку «UPDATE на таблице« RESERVATION »вызвало нарушение ограничения внешнего ключа .. для ключа (0)». Это потому, что 0 не является значением в таблице Packages? Как ни странно, это не проблема с моим предыдущим приложением. Дерби что-то изменило с помощью новых файлов jar? Или как я могу решить эту проблему? Я хочу, чтобы и RoomId, и pkgId принимали 0 в таблице резервирования в некоторый момент времени, сохраняя ограничение внешнего ключа. Может кто-нибудь мне помочь ? Заранее спасибо!
Либо вставить новую запись в пакетах таблицу => 'вставить в пакеты (pkgid, имя) значение (0, «гость не берет пакеты») 'или удаляет внешний ключ или использует значение NULL. Внешний ключ - это ограничение, в котором говорится, что «значение внешнего ключа ** всегда должно существовать ** в ссылочной таблице». – krokodilko
Думаю, я поеду с вставкой новой строки и скрою эту строку от конечного пользователя. Но я не уверен, как он работал в моих предыдущих версиях дерби. Большое спасибо. – Thomson