すべてのユーザーが 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 のどの行からも参照されなくなった場合、MySQL データベースが A の行を自動的に削除できるかどうか疑問に思っています。
ここでの考え方は、単純にテーブル B の a_id を NULL に設定し、データベースに残っているものをクリーンアップできるということです。今考えるとJavaのガベージコレクションに似ていると思います。制約を自動的に適用するキーがない場合、更新後に実行されるトリガーは機能しますか?
編集:追加の関係制約を追加します。