こんにちは、私のDerby組み込みテーブルに外部キー制約があります。私は部屋、パッケージ、予約の3つのテーブルを持っています。Derby外部キー制約の問題
ルームテーブル--- RoomId |ルーム名|レンタル|説明
パッケージ表--- pkgId |名前|レート|詳細
予約表--- Id |ゲストID | pkgId |ルームID | ChkIn | ChkOut |日付|
予約テーブルの3つの外部キーは、GuestID、pkgId、roomIdです。
私が望んだのは、それぞれのテーブルにないいくつかの値を受け入れるための外部キーです。たとえば、ゲストがパッケージを取っていない場合、予約テーブルのpkgIdを0にしたいとします。しかし、私が何らかの理由で「テーブル 'RESERVATION'の更新が外部キー制約の違反を引き起こしました。キー(0)」のエラーです。それは0がPackagesテーブルの値ではないからですか?奇妙なことに、私の以前のアプリケーションでは問題ではありませんでした。ダービーは新しいjarファイルで何かを変えましたか?またはこの問題をどうやって解決できますか?私はRoomIdとpkgIdの両方が外部キーの制約を保ちながらある時点で予約テーブルに0を受け入れるようにしたい。誰でも助けてくれますか?前もって感謝します!
として
null
を使用しているパッケージの表=> 'パッケージに挿入(pkgidは、名)の値(に新しいレコードを挿入する必要があります0、 'ゲストはパッケージを取っていません') 'または外部キーを削除するか、NULL値を使用します。外部キーは、 "外部キー値**は常に**参照テーブルに存在しなければなりません"という制約です。 – krokodilko私は新しい行を挿入し、その行をエンドユーザーから隠すことになると思います。しかし、以前のダービー版でどのように動作していたのか分かりません。どうもありがとうございました。 – Thomson