sql >> Databasteknik >  >> RDS >> Mysql

Hur man utför redigering i junction table

Du behöver inte ta bort alla rader till att börja med.

Du kan bara ta bort de rader som inte längre gäller och bara infoga de rader som är nya. Eller så kan du uppdatera ett värde som inte längre gäller med ett värde som gäller.

Så för att komma från det här

Name    Role
--
John    Admin
John    Member
John    Superuser

till detta

Name    Role
--
John    Member
John    Junior

Du kan radera det som inte längre gäller. . .

delete from userinroles
where Name = 'John' 
  and (Role = 'Admin' or Role = 'Superuser');

och infoga vad som gäller.

insert into userinroles (Name, Role)
values ('John', 'Junior');

Eller så kan du uppdatera ett värde med ett nytt värde.

delete from userinroles
where Name = 'John' 
  and Role = 'Admin';

Följt av

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

Du sa

Det är vad transaktioner är till för. Flera satser inom en enda SQL-transaktion är allt eller inget – antingen lyckas de alla eller så görs inga ändringar.



  1. Förhindrar Knex.js sql-injektion?

  2. MySQL och PHP - hur visar man alla rader där fältvärdet är lika med x?

  3. PÅ DUBLIKAT UPPDATERING AV NYCKEL - får integritetsbegränsningsöverträdelse

  4. hur man får tabellens schemanamn