首页 > 解决方案 > 当我插入数据时,它总是说外键不匹配。我找不到原因?

问题描述

CREATE TABLE Student 
(
    Registration_No INTEGER  NOT NULL ,
    NIC  varchar(25),
    Student_Name varchar(255),
    Address varchar(255),
    Home_Telephone_No varchar(25),
    Mobile_Telephone_No varchar(25),
    Email varchar(255),
    Education varchar(255),

    PRIMARY KEY (Registration_No, NIC)
);

CREATE TABLE Payment 
(
    Registration_No INTEGER NOT NULL,
    Registration_fee decimal(15,2),
    Annual_subscription decimal(15,2),

    FOREIGN KEY(Registration_No) 
        REFERENCES Student(Registration_No)
);

错误:

外键不匹配 - “付款”引用“学生” 1 :] 1 INSERT INTO Payment(Registration_No,Registration_fee,Annual_subscription )VALUES(10,100.50,500);

外键不匹配 - 引用“学生”的“付款”

标签: sqlsqlite

解决方案


  • 您在表中的主键Student不是Registration_No 单独的,而是和的组合Registration_NoNIC
  • 现在,当您从其他表中引用它时,您只引用了不是唯一导致错误的组合的一部分,解决方案是FK与 PK或至少父表的唯一列匹配,以使其按预期工作,在这里阅读更多-> https://stackoverflow.com/a/18435114/8057127

推荐阅读