Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como executar a edição na tabela de junção


Você não precisa excluir todas as linhas para começar.

Você pode excluir apenas as linhas que não se aplicam mais e inserir apenas as linhas novas. Ou você pode atualizar um valor que não se aplica mais com um valor que se aplica.

Então, para sair disso
Name    Role
--
John    Admin
John    Member
John    Superuser

para isso
Name    Role
--
John    Member
John    Junior

Você pode excluir o que não se aplica mais. . .
delete from userinroles
where Name = 'John' 
  and (Role = 'Admin' or Role = 'Superuser');

e insira o que se aplica.
insert into userinroles (Name, Role)
values ('John', 'Junior');

Ou você pode atualizar um valor com um novo valor.
delete from userinroles
where Name = 'John' 
  and Role = 'Admin';

Seguido por
update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';

Você disse

É para isso que servem as transações. Múltiplas instruções dentro de uma única transação SQL são tudo ou nada - ou todas são bem-sucedidas ou nenhuma alteração é feita.