sql >> Database >  >> RDS >> Mysql

MYSQL, PHP invoegen in meerdere tabellen in database

Aangezien deze twee invoegingen onafhankelijk van elkaar worden uitgevoerd, kan een ander programma dat gelijktijdig wordt uitgevoerd de database in een staat zien waarin de eerste invoeging is voltooid, maar de tweede niet.

Of dit een probleem is of niet, hangt af van de toepassingslogica. In jouw geval is het moeilijk te zeggen zonder aanvullende informatie. Waarschijnlijk niet. Een financiële transactie waarbij twee rekeningen betrokken zijn, is een voorbeeld waarbij dit is een probleem:u wilt niet dat de som van alle rekeningsaldi op enig moment verkeerd is.

Als je denkt dat je dit nodig hebt, kun je de bewerking atomair maken ten koste van de prestaties:een ander programma zal de database ofwel zien vóór de eerste invoeging, of na de tweede invoeging. Het werkt als volgt:

$result = FALSE;
if (mysql_query('BEGIN')) {
    if (mysql_query($query1) &&
        mysql_query($query2))
        $result = mysql_query('COMMIT'); // both queries looked OK, save
    else
        mysql_query('ROLLBACK'); // problems with queries, no changes
}

De opslagengine moet transacties ondersteunen, d.w.z. het moet InnoDB . Anders zal dit stilzwijgend niet werken.



  1. MySQL onverwachte resultaten:IN-clausule (getal, 'string') op een varchar-kolom

  2. Dynamische draaitabel in SQL Server

  3. Door de gebruiker gedefinieerde functies van SQL Server

  4. Wat hebben de Olympische Spelen, UEFA Euro 2016 voetbalwedstrijden en databases met elkaar gemeen?