Vous n'êtes pas obligé de supprimer toutes les lignes pour commencer.
Vous pouvez supprimer uniquement les lignes qui ne s'appliquent plus et insérer uniquement les nouvelles lignes. Ou vous pouvez mettre à jour une valeur qui ne s'applique plus avec une valeur qui s'applique.
Donc pour en tirer
Name Role
--
John Admin
John Member
John Superuser
à ça
Name Role
--
John Member
John Junior
Vous pouvez supprimer ce qui ne s'applique plus. . .
delete from userinroles
where Name = 'John'
and (Role = 'Admin' or Role = 'Superuser');
et insérez ce qui s'applique.
insert into userinroles (Name, Role)
values ('John', 'Junior');
Ou vous pouvez mettre à jour une valeur avec une nouvelle valeur.
delete from userinroles
where Name = 'John'
and Role = 'Admin';
Suivi de
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';
Vous avez dit
C'est à ça que servent les transactions. Plusieurs instructions au sein d'une même transaction SQL sont tout ou rien :soit elles réussissent toutes, soit aucune modification n'est apportée.