Sql Derby外键约束问题

Sql Derby外键约束问题,sql,derby,Sql,Derby,嗨,我的derby嵌入表中有一个外键约束。我有三张桌子,即房间、包裹和预订 餐桌--- 室友|室名|租金|描述 包装表--- pkgId |名称|费率|详细信息 预订表--- Id | GuestID | pkgId | RoomId | ChkIn | ChkOut |日期| 所以预订表中的三个外键是GuestID、pkgId和roomId 我想要的只是外键接受一些不在各自表中的值。例如,如果一位客人没有拿包裹,我想将预订表中的pkgId设置为0。但由于某些原因,我收到错误“表'RESERVA

嗨,我的derby嵌入表中有一个外键约束。我有三张桌子,即房间、包裹和预订

餐桌--- 室友|室名|租金|描述

包装表--- pkgId |名称|费率|详细信息

预订表--- Id | GuestID | pkgId | RoomId | ChkIn | ChkOut |日期|

所以预订表中的三个外键是GuestID、pkgId和roomId


我想要的只是外键接受一些不在各自表中的值。例如,如果一位客人没有拿包裹,我想将预订表中的pkgId设置为0。但由于某些原因,我收到错误“表'RESERVATION'上的更新导致违反外键约束..键(0)”。这是因为0不是Packages表中的值吗?奇怪的是,我以前的申请没有问题。derby用新的jar文件改变了什么吗?或者我如何解决这个问题?我希望RoomId和pkgId在保留外键约束的同时,在某个时间点接受预订表中的0。有人能帮我吗?提前谢谢

在SQL中,0与其他值一样是有效值。因此,如果将0设置为FK列,它将在相关表中查找包含0的行


如果要指示另一个表上没有相关行,则应使用
null
作为ID

将新记录插入包表=>
insert-into-Packages(pkgid,name)值(0,'guest-not-take-Packages')
或删除外键或使用null值。外键是一个约束,表示“外键值必须始终存在于引用的表中”。我想我将插入一个新行,并向最终用户隐藏该行。但我不确定它在我早期的derby版本中是如何工作的。非常感谢。很遗憾,我不能插入空值。但是我很困惑,因为0值在我早期的derby版本中起作用。无论如何,谢谢你证实这一事实。