0

ここで外部キー制約にリンクされている複数のタプルを更新する方法は私のテーブル定義です

CREATE TABLE person
(
    driverId VARCHAR(10) PRIMARY KEY,
    driverName VARCHAR(30),
    address VARCHAR(50)
);

CREATE TABLE car
(
    regNo VARCHAR(10),
    model VARCHAR(25),
    YEAR INT,
    PRIMARY KEY(regNo)
);


CREATE TABLE accident 
(
    reportNo INT,
    accidentDate DATE,
    location VARCHAR(30),
    PRIMARY KEY(reportNo)
);

CREATE TABLE participated
(
    driverId VARCHAR(10),
    regNo VARCHAR(10) ,
    reportNo INT,
    damageAmount INT,
    FOREIGN KEY(driverId) REFERENCES person(driverId),
    FOREIGN KEY(regNo) REFERENCES car(regNo),
    FOREIGN KEY(reportNo) REFERENCES accident(reportNo),
    PRIMARY KEY(driverId, regNo,reportNo)
);

CREATE TABLE owns
(
    driverId VARCHAR(10),
    regNo VARCHAR(10),
    FOREIGN KEY(driverId) REFERENCES person(driverId),
    FOREIGN KEY(regNo) REFERENCES car(regNo),
    PRIMARY KEY(driverId, regNo)
);

このコマンドを実行しているとき

UPDATE accident
SET reportNo=5555
WHERE reportNo=2222;

「PARTICIPATED」テーブルの同じ「reportNo」のタプルは更新されていません

4

3 に答える 3

0

ON UPDATE CASCADE参加テーブルの外部キー制約に追加してみてください

于 2013-02-03T16:13:54.717 に答える
0
  1. データベース エンジンは である必要がありますInnoDB。以下を使用してエンジンを変更できます。

    ALTER TABLE database_name.table_name ENGINE = InnoDB;

  2. 参照アクションが指定されていない場合、デフォルトのアクションは制限です。ON DELETEまたはON UPDATEアクションを指定する必要があります。ドキュメンテーション

于 2013-02-03T16:18:17.260 に答える
0

次のクエリを使用します。
ALTER TABLE table_name ADD FOREIGN KEY(keyname) は、delete cascade の update cascade で parent_table_name.column name を参照します。

カスケードにより、親テーブルの変更を子テーブルに反映できます。ただし、ストレージ エンジンが InnoDB でなければならないことを確認してください

于 2013-02-03T16:21:41.960 に答える