Bạn không cần phải xóa tất cả các hàng để bắt đầu.
Bạn chỉ có thể xóa các hàng không còn áp dụng và chỉ chèn các hàng mới. Hoặc bạn có thể cập nhật một giá trị không còn áp dụng với một giá trị vẫn áp dụng.
Vì vậy, để đạt được từ điều này
Name Role
--
John Admin
John Member
John Superuser
tới cái này
Name Role
--
John Member
John Junior
Bạn có thể xóa những gì không còn áp dụng. . .
delete from userinroles
where Name = 'John'
and (Role = 'Admin' or Role = 'Superuser');
và chèn những gì phù hợp.
insert into userinroles (Name, Role)
values ('John', 'Junior');
Hoặc bạn có thể cập nhật một giá trị bằng một giá trị mới.
delete from userinroles
where Name = 'John'
and Role = 'Admin';
Tiếp theo là
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';
Bạn đã nói
Đó là những gì giao dịch dành cho. Nhiều câu lệnh trong một giao dịch SQL duy nhất là tất cả hoặc không có gì - hoặc tất cả đều thành công hoặc không có thay đổi nào được thực hiện.