Sie müssen nicht alle Zeilen löschen, um damit zu beginnen.
Sie können nur die nicht mehr zutreffenden Zeilen löschen und nur die neuen Zeilen einfügen. Oder Sie können einen Wert, der nicht mehr zutrifft, mit einem Wert aktualisieren, der zutrifft.
Also um daraus zu kommen
Name Role
--
John Admin
John Member
John Superuser
dazu
Name Role
--
John Member
John Junior
Was nicht mehr zutrifft, können Sie löschen. . .
delete from userinroles
where Name = 'John'
and (Role = 'Admin' or Role = 'Superuser');
und fügen Sie ein, was zutrifft.
insert into userinroles (Name, Role)
values ('John', 'Junior');
Oder Sie können einen Wert mit einem neuen Wert aktualisieren.
delete from userinroles
where Name = 'John'
and Role = 'Admin';
Gefolgt von
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';
Sie sagten
Dafür sind Transaktionen da. Mehrere Anweisungen innerhalb einer einzigen SQL-Transaktion sind alles oder nichts – entweder sind sie alle erfolgreich oder es werden keine Änderungen vorgenommen.