外键:列数不等于引用列

时间:2018-05-03 08:54:58

标签: sql oracle

我从oracle收到一条错误,说明"引用列的数量必须与引用的列匹配。"
我希望表测量中的 recorded_on 列在示例表格中引用 recorded_on 示例表中记录列必须与 Scientist_Num 一起成为复合键的一部分 错误来自于      FOREIGN KEY(Recorded_On)参考样本(Scientist,Recorded_On,Site_ID)

import json

def view_function(request):
    json_boolean_to_python_boolean = json.loads(request.POST.get('json_field'))

Scientist_Num和Recorded_On列必须在一起使用复合键。
我非常感谢我的问题的答案以及对出了什么问题的解释。

2 个答案:

答案 0 :(得分:0)

您可以在样本表中创建虚拟列:

Recorded_virtual varchar2(5) [GENERATED ALWAYS] AS 
(Scientist||Recorded_On||Site_ID) [VIRTUAL] 

并创建对此列的引用:

CONSTRAINT fk_column
 FOREIGN KEY (Recorded_On)
 REFERENCES Sample(Recorded_virtual )

答案 1 :(得分:0)

外键引用需要匹配数字和类型中的主键。所以我想你打算:

CREATE TABLE Measurement (
    Site_ID varchar2(4) not null,
    Scientist_Num varchar2(5) not null,
----^ added for foreign key reference
    Recorded_On date not null,
    Name varchar2(10) not null,
    Value varchar2(10),
    Outlier_Indicator varchar2(10),
    Primary key (Site_ID, Recorded_On, Name),
    FOREIGN KEY (Site_ID) REFERENCES Site(Site_ID),
-------------------------------------^ Presumably you intend the site table
    FOREIGN KEY (Scientist_Num, Recorded_On) REFERENCES 
Sample(Scientist_Num, Recorded_On)
-----------------^ two columns, both need to already be defined
); 

我怀疑您的数据模型存在其他问题,但这应该可以解决语法错误。如果您需要进一步的帮助,请询问其他问题。