我正在编写一个应用程序,它要求所有用户使用 MySQL 访问中央数据库上的数据,我想知道一些事情。
假设我有这个设置。
CREATE TABLE A
(
id INT PRIMARY KEY AUTO_INCREMENT,
data INT NOT NULL;
);
CREATE TABLE B
(
id INT PRIMARY KEY AUTO_INCREMENT,
a_id INT,
FOREIGN KEY (a_id) REFERENCES A(id) ON DELETE SET NULL
);
现在,我希望这种设置的方式是,表 A 必须始终被表 B 中的一行引用。但是,表 B 中的一行可能引用也可能不引用表 A 中的一行。其中的关系是 1:n表 B 中的多行可以引用表 A 中的单行。我只是想知道如果表 B 中的任何行不再引用 A 中的一行,MySQL 数据库是否可以自动删除该行。
这里的想法是我可以简单地将表 B 中的 a_id 设置为 NULL 并让数据库清理剩下的任何内容。我想这类似于 Java 垃圾收集现在我想到它。如果没有自动执行约束的键,更新后执行的触发器会起作用吗?
编辑:添加额外的关系约束。