sql >> Database teknologi >  >> RDS >> Mysql

MYSQL, PHP Indsæt i flere tabeller i databasen

Da disse to indsættelser udføres uafhængigt, kan et andet program, der kører samtidig, se databasen i en tilstand, hvor den første indsættelse er udført, men den anden ikke er det.

Om dette er et problem eller ej, afhænger af applikationslogikken. I dit tilfælde er det svært at sige uden yderligere information. Sikkert ikke. En finansiel transaktion, der involverer to konti, er et eksempel, hvor dette er et problem:du ønsker ikke at summen af ​​alle kontosaldi skal være forkert på noget tidspunkt.

Hvis du tror, ​​du har brug for dette, kan du gøre operationen atomisk på bekostning af ydeevne:et andet program vil enten se databasen før den første indsættelse eller efter den anden indsættelse. Det fungerer sådan her:

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

Lagermotoren skal understøtte transaktioner, dvs. den skal være InnoDB . Ellers vil dette lydløst ikke virke.



  1. Hvordan forbinder man NetBeans til MySQL-databasen?

  2. Hvad er formålet med en IMPLICIT JOIN i sql?

  3. MySQL - Vælg den sidste indsatte række nemmeste måde

  4. linq til entitet:linq-forespørgselsoptimering