【问题标题】:SQL Cannot add or update a child row: a foreign key constraintSQL 无法添加或更新子行:外键约束
【发布时间】:2015-06-02 15:36:37
【问题描述】:
CREATE TABLE EMPLOYEE(
->  Emp_No          INT(4),
->  Emp_Fname       VARCHAR(50),
->  Emp_Lname     VARCHAR(50),
->  Job_Class               VARCHAR(4),
->  PRIMARY KEY     (Emp_No),
->  FOREIGN KEY (Job_Class) REFERENCES JOB (Job_Class)
->  );

查询正常,0 行受影响(0.09 秒)

CREATE TABLE PROJECT(
->  Pro_No       INT(4),
->  Pro_Name                VARCHAR(50),
->  Pro_Leader     VARCHAR(50),
->  Emp_No       INT(4),
->  PRIMARY KEY (Pro_No),
->  FOREIGN KEY (Emp_No) REFERENCES EMPLOYEE (Emp_No)
->  );

查询正常,0 行受影响(0.23 秒)

CREATE TABLE ASSIGN(
->  Pro_No       INT(4),
->  Emp_No          INT(4),
->  Job_Class    VARCHAR(4),
->  Assign_Hours       DECIMAL(6,2),
->  Total_Charge        DECIMAL(6,2),
->  PRIMARY KEY (Pro_No, Emp_No),
->  FOREIGN KEY (Pro_No) REFERENCES PROJECT (Pro_No),
->  FOREIGN KEY (Emp_No) REFERENCES EMPLOYEE (Emp_No)
->  );

查询正常,0 行受影响(0.08 秒)

INSERT INTO EMPLOYEE (Emp_No, Emp_Fname, Emp_Lname, Job_Class) VALUES ('101', 'John','New','DD');

错误 1452 (23000):无法添加或更新子行:外键约束失败
(o_m_m.employee, CONSTRAINT employee_ibfk_1 FOREIGN KEY (Job_Class) REFERENCES job ( Job_Class))

谁能帮帮我,我的 sql 工作正常

我丢失了 -> FOREIGN KEY (Job_Class) REFERENCES JOB (Job_Class) in EMPLOYEE,我添加并填充了

现在我收到此错误

【问题讨论】:

  • Job_class=DD 是否存在于 Job 表中?

标签: mysql sql


【解决方案1】:

外键关系涉及一个父表,该表包含 中心数据值,以及具有相同值指向的子表 回到它的父级。 FOREIGN KEY 子句在子句中指定 表。

它将拒绝任何尝试创建的 INSERT 或 UPDATE 操作 如果没有匹配项,则子表中的外键值 父表中的候选键值。

也许,您正试图在子表中插入父表中不存在的外键值。

礼貌:Using FOREIGN KEY Constraints

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 2015-12-23
    相关资源
    最近更新 更多