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
  1. 您的数据库引擎必须是InnoDB. 您可以使用以下方法更改引擎:

    ALTER TABLE database_name.table_name ENGINE = InnoDB;

  2. 如果未指定引用操作,则默认操作是限制。您必须指定ON DELETEON UPDATE操作。文档

于 2013-02-03T16:18:17.260 回答
0

使用以下查询。
ALTER TABLE table_name ADD FOREIGN KEY(keyname) 引用 parent_table_name.column name on update cascade on delete cascade。

级联允许父表中的更改反映在子表中。但请确保您的存储引擎必须是 InnoDB

于 2013-02-03T16:21:41.960 回答
0

尝试ON UPDATE CASCADE在参与表中添加外键约束

于 2013-02-03T16:13:54.717 回答