J'ai ci-dessous déclencheurboucle dans trigger SQL Server
ALTER TRIGGER [dbo].[DeleteUserData]
ON [dbo].[site_users]
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
--delete user uploads
update my_gallery set deleted=1 where un=(select un from deleted) and subdomain=(select subdomain from deleted)
--delete user pms
delete from pms where toUn=(select un from deleted) and subdomain=(select subdomain from deleted)
--delete friends
delete from friend_blocked_list where un=(select un from deleted) and subdomain=(select subdomain from deleted)
FIN
il fonctionne très bien lorsque je supprime un utilisateur, mais si je supprime plus d'un utilisateur rendement des sous-requêtes plus d'un utilisateur dans le tableau supprimé et le déclencheur échoue.
Comment puis-je l'ajuster pour qu'il fonctionne lorsque je supprime plus d'un utilisateur à la fois?
J'ai pensé à la modifier comme ci-dessous. Est-ce correct?
Altered
--delete user uploads
update my_gallery set deleted=1 where un in (select un from deleted) and subdomain in (select subdomain from deleted)
--delete user pms
delete from pms where toUn in (select un from deleted) and subdomain in (select subdomain from deleted)
--delete friends
delete from friend_blocked_list where un in (select un from deleted) and subdomain in (select subdomain from deleted)
Certains peuvent se demander pourquoi ne pas ajouter des clés étrangères aux tables, mais les noms d'utilisateur unique dans leur sous-domaine