Я читал некоторые из ответов Билла Карвина о одиночном наследовании таблицы и думаю, что этот подход будет хорошо для настройки, которую я рассматриваю:
Playlist
--------
id AUTO_INCREMENT
title
TeamPlaylist
------------
id REFERENCES Playlist.id
teamId REFERENCES Team.id
UserPlaylist
------------
id REFERENCES Playlist.id
userId REFERENCES User.id
PlaylistVideo
-------------
id
playlistId REFERENCES Playlist.id
videoId REFERENCES Video.id
Все параметры CASCADE
установлены на DELETE
, которые будут корректно работать, когда удаляется Playlist
, однако, что происходит, если удаляется User
или Team
?
т. Если a User
удаляется, строки в UserPlaylist
будут удалены, но ссылки в строках в Playlist
и PlaylistVideo
останутся. Я думал об обеспечении этого как TRIGGER AFTER DELETE
, но не существует способа узнать, вызвал ли запрос удаления, потому что был удален Playlist
или удалено User
.
Каков наилучший способ обеспечения целостности в этой ситуации?
Изменить (предоставлено ERD)