最初にすべての行を削除する必要はありません。
適用されなくなった行のみを削除し、新しい行のみを挿入できます。または、適用されなくなった値を、適用される値で更新することもできます。
だからこれから得るために
Name Role
--
John Admin
John Member
John Superuser
これに
Name Role
--
John Member
John Junior
適用されなくなったものは削除できます。 。 。
delete from userinroles
where Name = 'John'
and (Role = 'Admin' or Role = 'Superuser');
適用されるものを挿入します。
insert into userinroles (Name, Role)
values ('John', 'Junior');
または、値を新しい値で更新できます。
delete from userinroles
where Name = 'John'
and Role = 'Admin';
続いて
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';
あなたが言った
それがトランザクションの目的です。単一のSQLトランザクション内の複数のステートメントは、すべてまたはまったくありません。すべて成功するか、変更が加えられません。