我目前正在测试某些内容,并在尝试在表中插入一些值时遇到问题。
我有以下 3 个表;设备,室外,室内。
**outdoor** ---> **devices** <----- **indoor**
net_id(pk) net_id(fk) net_id(pk)
我想要建立一种关系,以便设备可以通过室内或室外的 net_id 来位于室外或室内。因此我做了以下事情:
ALTER TABLE devices
ADD CONSTRAINT o_relationship
FOREIGN KEY (net_id)
REFERENCES outdoor (net_id);
ALTER TABLE devices
ADD CONSTRAINT i_relationship
FOREIGN KEY (net_id)
REFERENCES indoor (net_id);
现在我的问题是,当我尝试在设备中插入值时,除非 net_id 值同时属于室内和室外表,否则我无法这样做。这意味着,假设“net_001”存在于室内和室外表中,它允许我将其插入设备中,但如果“net_001”存在于室内,“net_002”存在于室外,假设我想添加“net_001”或“net_002”在设备中它不允许我这样做。因此,我希望能够在设备表中进行插入,如上所述。
希望我能够清楚地解释这个问题。预先感谢您!
最佳答案
在表设备中使用两列,一列用于室内,一列用于室外,否则您无法区分哪一个是室内,哪一个是室外,因为它们可能具有与您描述的相同的 id。
ALTER TABLE devices
ADD CONSTRAINT o_relationship
FOREIGN KEY (net_indoor_id)
REFERENCES indoor (net_id);
ALTER TABLE devices
ADD CONSTRAINT o_relationship
FOREIGN KEY (net_outdoor_id)
REFERENCES outdoor (net_id);
关于mysql - 在外键列上插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265241/