0

別のテーブルで外部キーとして参照されているフィールドを更新しようとしています。

mysql> update Maintenance set contract='95096916-OLD' where contract='95096916';

エラー 1451 (23000): 親行を削除または更新できません: 外部キー制約が失敗しました ( systems_doc. Equipment, CONSTRAINT Equipment_ibfk_1FOREIGN KEY ( contract) REFERENCES Maintenance ( contract) ON UPDATE CASCADE)

| Maintenance | CREATE TABLE `Maintenance` (
  `contract` char(30) NOT NULL,
  `quote` char(30) NOT NULL,
  `vendor` char(20) NOT NULL,
  `provider` char(20) NOT NULL,
  `product` char(30) NOT NULL,
  `expiryDate` date NOT NULL,
  `annualCost` int(11) NOT NULL,
  `reference` char(13) NOT NULL,
  `purchaseOrder` char(13) NOT NULL,
  `cq` char(10) NOT NULL,
  `cqRenewal` char(10) NOT NULL,
  `comments` char(40) NOT NULL,
  UNIQUE KEY `contract` (`contract`,`expiryDate`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 

| Equipment | CREATE TABLE `Equipment` (
  `vendor` char(20) NOT NULL,
  `model` char(30) NOT NULL,
  `serialNumber` char(20) NOT NULL,
  `purchaseOrder` char(20) NOT NULL,
  `purchaseDate` date NOT NULL,
  `contract` char(15) NOT NULL,
  `annualCost` int(11) NOT NULL,
  `comments1` varchar(256) DEFAULT NULL,
  `comments2` varchar(256) NOT NULL,
  PRIMARY KEY (`serialNumber`),
  KEY `contract` (`contract`),
  CONSTRAINT `Equipment_ibfk_1` FOREIGN KEY (`contract`) REFERENCES `Maintenance` (`contract`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 

UPDATEをカスケードしないのはなぜですか? 円形ではないと思います。ご協力いただきありがとうございます。他の同様の問題を読んだことがありますが、それがどのように機能するかを誤解しているか、セットアップが間違っています。

4

0 に答える 0