sql >> Databasteknik >  >> RDS >> Mysql

MYSQL, PHP Infoga i flera tabeller i databasen

Eftersom dessa två infogningar exekveras oberoende, kan ett annat program som körs samtidigt se databasen i ett tillstånd där den första infogningen är klar men den andra inte.

Om detta är ett problem eller inte beror på applikationslogiken. I ditt fall är det svårt att säga utan ytterligare information. Antagligen inte. En finansiell transaktion som involverar två konton är ett exempel där detta är ett problem:du vill inte att summan av alla kontosaldon ska vara fel när som helst.

Om du tror att du behöver detta kan du göra operationen atomär till priset av prestanda:ett annat program kommer antingen att se databasen före den första infogningen eller efter den andra infogningen. Det fungerar så här:

$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
}

Lagringsmotorn måste stödja transaktioner, dvs. den måste vara InnoDB . Annars kommer detta inte att fungera i tysthet.



  1. Sortera kulor i databasen

  2. STRING_SPLIT() i SQL Server 2016:Uppföljning #2

  3. Hur hittar man alla versaler i en MySQL-tabell?

  4. PostgreSQL DATEADD() Ekvivalent