Doctrine orm 条令继承映射——在id字段更新时添加级联

Doctrine orm 条令继承映射——在id字段更新时添加级联,doctrine-orm,constraints,class-table-inheritance,Doctrine Orm,Constraints,Class Table Inheritance,我已经用单独的表继承映射设置了数据,但条令似乎对它的控制非常有限。 在其他问题中,我得到的一个问题是,它只在删除时级联 (我使用XML映射) 从我所看到的情况来看,级联被放在关系标记中,而在使用继承映射的ID列中没有关系标记 没有简单的方法确保我的数据保持一致吗?(例如,如果从外部进入)? 如果不这样做,即使对我的一行数据进行简单的更新也会变得复杂,因为它会违反约束 编辑@Cerad:下面是一个示例。我使用MariaDB 10.3.22 CREATE DATABASE kaskade; USE

我已经用单独的表继承映射设置了数据,但条令似乎对它的控制非常有限。
在其他问题中,我得到的一个问题是,它只在删除时级联

(我使用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;

您正在尝试更新实际的id列吗?因为那只是自找麻烦。还是发生了其他事情?@Cerad我想对我的数据施加尽可能多的限制,以便它们保持一致,无论从何处修改。由于来自母类的id被一个FK引用,我希望它在两个表上同时更新。我认为这在SQL方面是可能的,不是吗?不太可能。无论何时尝试引用用作外键的id,都会遇到问题。从sql管理控制台为自己制作几个简单的表,然后自己尝试。通常,在创建数据库行后,应该不使用id。你应该避免让他们暴露在外面。所有基本的数据库内容。@Cerad刚刚添加了一个示例。虽然我同意操纵ID可能不是一件好事,但这完全取决于个人的需要。例如,一个小型用户数据库可以使用丑陋的VARCHAR作为用户ID,并允许重命名它们。不管怎样,我的问题是:有没有可能通过信条来实现这种简单的SQL需求?恐怕不是。(在同样的想法中,似乎我不能设置一个简单的“检查”约束……这让我感到困惑。