2017-02-06 7 views
0

次のクエリを実行しようとしている間:ON CASCADE UPDATEを正しく使用していますか?

UPDATE Flight 
SET FLNO = '1001' 
WHERE FLNO = '1000'; 

を、私は、次のエラーが表示さ:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`user/FlightLegInstance`, CONSTRAINT `FlightLegInstance_ibfk_1` FOREIGN KEY (`FLNO`) REFERENCES `FlightLeg` (`FLNO`) ON UPDATE CASCADE) 

次は私の作成クエリです:

フライト:

CREATE TABLE Flight (
FLNO INTEGER NOT NULL, 
Meal varchar(50) NOT NULL, 
Smoking char(1) NOT NULL, 
PRIMARY KEY (FLNO) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

FlightLeg:

CREATE TABLE FlightLeg (
FLNO INTEGER NOT NULL, 
Seq char(25) NOT NULL, 
FromA char(3) NOT NULL, 
ToA char(3) NOT NULL, 
DeptTime DATETIME NOT NULL, 
ArrTime DATETIME NOT NULL, 
Plane INTEGER NOT NULL, 
PRIMARY KEY (FLNO, Seq), 
FOREIGN KEY (FLNO) REFERENCES Flight(FLNO) ON UPDATE CASCADE, 
FOREIGN KEY (FromA) REFERENCES Airport(Code), 
FOREIGN KEY (ToA) REFERENCES Airport(Code) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

FlightLegInstance:

CREATE TABLE FlightLegInstance (
Seq char(25) NOT NULL, 
FLNO INTEGER NOT NULL, 
FDate DATE NOT NULL, 
ActDept DATETIME NOT NULL, 
ActArr DATETIME NOT NULL, 
Pilot INTEGER NOT NULL, 
PRIMARY KEY (Seq, FLNO, FDate), 
FOREIGN KEY (FLNO) REFERENCES FlightLeg(FLNO) ON UPDATE CASCADE, 
FOREIGN KEY (FLNO, FDate) REFERENCES FlightInstance(FLNO, FDate) ON UPDATE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

私はエラーがFlightLegInstanceの2つのFK定義の1つであることを前提としていますが、私はよく分かりません。誰もこれで私を助けることができますか?

ありがとうございました。あなたはこの問題の解決策は、あなたが

+0

SHOW ENGINE INNODB STATUSを使用してください両方の場所で おかげで、それを更新する必要があるforiegnキー として第2表中のdefind [flno]列を持っているので、 – philipxy

+0

[mcve]を読んで行動してください。例:FlightInstance DDL、入力、出力、および希望出力。また、FlightLegInstance(FLNO、...)FKからFlightInstanceまで、FlightInstance FK(FLNO)からFlight(FlightInstance FK)を(おそらくそうであるように)持っていれば、Flight to Flightは冗長です。 FlightLegInstanceはFlightLegにFK(FLNO、Seq)を持っていないはずですか? PS [2つのテーブルの間に、親テーブルまたは子テーブルの同じ列で動作するいくつかのON UPDATE CASCADE句を定義しないでください。](https://dev.mysql.com/doc/refman/5.7/en/ create-table-foreign-keys.html) – philipxy

答えて

0

この

は単に機能していません。
関連する問題