我已经用单独的表继承映射设置了我的数据,但是 Doctrine 似乎对它提供了非常有限的控制。
除其他问题外,我得到的一个问题是它仅在 DELETE 上级联。
(我使用 XML 映射)
据我所见,级联放置在关系标记内,而使用继承映射的 ID 列中不存在级联。
有没有简单的方法可以确保我的数据保持一致?(例如,如果从外部访问)?
没有这个,即使是对我的一条数据行的简单更新也会变得复杂,因为它会违反约束。
编辑@Cerad:这是一个示例工作示例。我使用 MariaDB 10.3.22
CREATE DATABASE kaskade;
USE kaskade;
CREATE TABLE a (main_id INT PRIMARY KEY);
CREATE TABLE b (fk_id INT PRIMARY KEY);
INSERT INTO a (main_id) VALUES (1), (2), (3);
INSERT INTO b (fk_id) VALUES (1), (2), (3);
ALTER TABLE b ADD CONSTRAINT id_link FOREIGN KEY (fk_id) REFERENCES a(main_id) ON UPDATE CASCADE;
SELECT * from a;
SELECT * from b;
UPDATE a SET main_id = main_id + 10 WHERE main_id > 1;
#UPDATE b SET id = 5 where id = 1; // Would be rejected, since the cascade must come from the "parent"
SELECT * from a;
SELECT * from b;