如何更新与外键约束链接的多个元组 这是我的表定义
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”的元组未更新
答案 0 :(得分:0)
尝试将ON UPDATE CASCADE
添加到参与表中的外键约束
答案 1 :(得分:0)
您的数据库引擎必须是InnoDB
。您可以使用以下方式更改引擎:
ALTER TABLE database_name.table_name ENGINE = InnoDB;
如果未指定参照操作,则默认操作为限制。您必须指定ON DELETE
或ON UPDATE
个操作。 Documentation
答案 2 :(得分:0)
使用以下查询。
ALTER TABLE table_name ADD FOREIGN KEY(keyname)在删除级联上更新级联时引用parent_table_name.column名称。
级联允许父表中的更改反映在子表中。 但请确保您的存储引擎必须是InnoDB