【问题标题】:Cannot add or update a child row无法添加或更新子行
【发布时间】:2011-11-24 04:09:59
【问题描述】:

我正在尝试将记录添加到下面的两个表中,

CREATE TABLE customer
(Custno     CHAR(3),
 Custname   VARCHAR(25) NOT NULL,
 Custstreet VARCHAR(30) NOT NULL,
 Custcity   VARCHAR(15) NOT NULL,
 Custprov   VARCHAR(3) NOT NULL,
 Custpcode  VARCHAR(6) NOT NULL,
 Disc       DECIMAL(3,1),
 Balance    DECIMAL(7,2),
 Credlimit  DECIMAL(5),
 Srepno     CHAR(3),
 CONSTRAINT pkcustno PRIMARY KEY (Custno),
 CONSTRAINT fksrepno FOREIGN KEY (Srepno) REFERENCES salesrep(Srepno)
);


CREATE TABLE orders
(Orderno   CHAR(5) UNIQUE NOT NULL,
 Orderdate DATE,
 Custno    CHAR(3) NOT NULL,
 CONSTRAINT fkordercust FOREIGN KEY (Custno) REFERENCES customer (Custno)
);

这样添加时,

INSERT INTO orders(Orderno, Orderdate, Custno) VALUES('14587','2011-11-09', '125' );
INSERT INTO orders(Orderno, Orderdate, Custno) VALUES('11547','2011-11-07', '125' );

我得到,“无法添加或更新子行:外键约束失败(sh.orders, CONSTRAINT fkordercust FOREIGN KEY (Custno) REFERENCES customer (@987654328 @)) " 桌子有问题吗?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您没有CustNo = '125' 的客户。因此,Foreign key 失败。您正在尝试为不存在的客户下订单,DB 抛出错误。

    【讨论】:

      【解决方案2】:

      您实际上客户编号为 125 的客户行吗?我想不是。错误消息准确地告诉您出了什么问题。

      违反了确保不能为不存在的客户创建订单的外键约束:

      CONSTRAINT fkordercust FOREIGN KEY (Custno) REFERENCES customer (Custno)
      

      首先创建客户行,然后您可以将该客户的订单行添加到您心仪的内容中。

      【讨论】:

        【解决方案3】:

        您的表很好,只是数据库中没有客户的 CustNo 为“125”。

        【讨论】:

          【解决方案4】:

          您已经为客户表创建了一个外键,但(显然)没有向其中插入任何数据。

          【讨论】:

            【解决方案5】:

            你有一个客户号码是 125 吗?

            【讨论】:

              猜你喜欢
              • 2020-10-19
              • 2014-04-12
              • 1970-01-01
              • 1970-01-01
              • 2018-03-30
              • 2017-05-28
              • 2014-07-27
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多