Du behøver ikke at slette alle rækkerne til at starte med.
Du kan kun slette de rækker, der ikke længere gælder, og kun indsætte de rækker, der er nye. Eller du kan opdatere en værdi, der ikke længere gælder, med en værdi, der gør sig gældende.
Så for at komme fra dette
Name Role
--
John Admin
John Member
John Superuser
til dette
Name Role
--
John Member
John Junior
Du kan slette det, der ikke længere gælder. . .
delete from userinroles
where Name = 'John'
and (Role = 'Admin' or Role = 'Superuser');
og indsæt hvad der gælder.
insert into userinroles (Name, Role)
values ('John', 'Junior');
Eller du kan opdatere en værdi med en ny værdi.
delete from userinroles
where Name = 'John'
and Role = 'Admin';
Efterfulgt af
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';
Du sagde
Det er det, transaktioner er til for. Flere sætninger inden for en enkelt SQL-transaktion er alt eller intet – enten lykkes de alle, eller også foretages der ingen ændringer.