Pro začátek nemusíte smazat všechny řádky.
Můžete odstranit pouze řádky, které již neplatí, a vložit pouze řádky, které jsou nové. Nebo můžete aktualizovat hodnotu, která již neplatí, hodnotou, která platí.
Abych se z toho dostal
Name Role
--
John Admin
John Member
John Superuser
k tomuto
Name Role
--
John Member
John Junior
Co již neplatí, můžete smazat. . .
delete from userinroles
where Name = 'John'
and (Role = 'Admin' or Role = 'Superuser');
a vložte, co platí.
insert into userinroles (Name, Role)
values ('John', 'Junior');
Nebo můžete aktualizovat hodnotu novou hodnotou.
delete from userinroles
where Name = 'John'
and Role = 'Admin';
Následuje
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';
Řekl jsi
K tomu slouží transakce. Více příkazů v rámci jedné transakce SQL je všechno nebo nic – buď všechny uspějí, nebo se neprovedou žádné změny.