Nie musisz usuwać wszystkich wierszy, aby zacząć.
Możesz usunąć tylko te wiersze, które nie mają już zastosowania, i wstawić tylko nowe wiersze. Możesz też zaktualizować wartość, która już nie ma zastosowania, wartością, która ma zastosowanie.
Aby się z tego wydostać
Name Role
--
John Admin
John Member
John Superuser
do tego
Name Role
--
John Member
John Junior
Możesz usunąć to, co już nie obowiązuje. . .
delete from userinroles
where Name = 'John'
and (Role = 'Admin' or Role = 'Superuser');
i wstaw, co ma zastosowanie.
insert into userinroles (Name, Role)
values ('John', 'Junior');
Możesz też zaktualizować wartość o nową.
delete from userinroles
where Name = 'John'
and Role = 'Admin';
Obserwowani przez
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';
Powiedziałeś
Po to są transakcje. Wiele instrukcji w ramach jednej transakcji SQL to wszystko albo nic — albo wszystkie się powiedzie, albo nie zostaną wprowadzone żadne zmiany.