Я пишу приложение, которое требует от всех пользователей доступа к данным в центральной базе данных с использованием 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. Мне просто интересно, возможно ли, чтобы база данных MySQL автоматически удаляла строку в A, если на нее больше не ссылается ни одна строка в таблице B.
Идея в том, что я могу просто установить a_id в таблице B в NULL и очистить базу данных, что бы там ни было. Я думаю, что это похоже на сборку мусора в Java сейчас, когда я думаю об этом. Если нет ключа для автоматического применения ограничения, будет ли запускаться триггер после обновления?
РЕДАКТИРОВАТЬ: Добавление в дополнительное отношение отношения.