无法添加或更新子行

时间:2011-11-24 04:09:59

标签: mysql sql

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

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' );

我知道,“无法添加或更新子行:外键约束失败(shorders,CONSTRAINT fkordercust FOREIGN KEY(Custno )参考customerCustno)) “ 桌子有问题吗?

5 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

您实际拥有客户编号为125的客户行吗?我想不是。错误消息告诉您完全出了什么问题。

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

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:3)

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

答案 4 :(得分:1)

您的客户数量是125吗?