我需要对我们的数据库进行一些迁移,但我遇到了问题。
我的表中的(AirportCodeDeparture)列可以从 Airport 表中引用 AirportCode 或 AirportMetropolitanCode 。 注意:这并不意味着 AirportCodeDeparture 是 AirportCode AND a AirportMetropolitanCode ,不,这是我问题的 OR 部分。
所以我尝试创建一个与这种情况相对应的表,但我不知道如何实现外键引用的OR部分。
这就是我现在所拥有的:
CREATE TABLE FlightAllotment
(
FlightAllotmentId smallint not null IDENTITY(1,1), CONSTRAINT PK_FlightAllotmentId PRIMARY KEY (FlightAllotmentId),
AirportCodeDeparture char(5) not null, CONSTRAINT FK_FlightAllotment_AirportCodeDeparture FOREIGN KEY (AirportCodeDeparture) REFERENCES Airport(AirportCode) OR Airport(AirportMetropolitanCode),
)
这部分:REFERENCES Airport(AirportCode) OR Airport(AirportMetropolitanCode)
我已经尝试了
REFERENCES Airport(AirportCode) || Airport(AirportMetropolitanCode)
REFERENCES Airport(AirportCode || AirportMetropolitanCode)
REFERENCES Airport(AirportCode OR AirportMetropolitanCode)
答案 0 :(得分:1)
你不能这样做,我害怕。 FK的目标需要是目标表上的唯一键,并且也只能是一列。没有OR允许。
这样做的一种方法是在机场为父级AirportMetropolitan输入,然后参考该条目,但我不知道那是多么明智。
另一种方法是让FlightAllotment.AirportDepartureCode成为机场的FK但可以为空,这样当你想使用AirportMetropolitan代码时就不必提供它。您还可以将FlightAllotment.AirportMetropolitanDepartureCode作为FK添加到AirportMetropolitan.AirportMetropolitanCode,也可以作为可以为空的列。
我担心这些是你的选择。