Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL, PHP Einfügen in mehrere Tabellen in der Datenbank

Da diese beiden Einfügungen unabhängig voneinander ausgeführt werden, könnte ein anderes gleichzeitig laufendes Programm die Datenbank in einem Zustand sehen, in dem die erste Einfügung erfolgt ist, die zweite jedoch nicht.

Ob dies ein Problem ist oder nicht, hängt von der Anwendungslogik ab. In Ihrem Fall ist es ohne zusätzliche Informationen schwer zu sagen. Wahrscheinlich nicht. Eine Finanztransaktion, an der zwei Konten beteiligt sind, ist ein Beispiel, wo dies ist ein Problem:Sie möchten nicht, dass die Summe aller Kontostände zu irgendeinem Zeitpunkt falsch ist.

Wenn Sie denken, dass Sie das brauchen, können Sie die Operation auf Kosten der Leistung atomar machen:Ein anderes Programm sieht die Datenbank entweder vor der ersten Einfügung oder nach der zweiten Einfügung. So funktioniert es:

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

Die Speicher-Engine muss Transaktionen unterstützen, d. h. sie muss InnoDB . Andernfalls wird dies stillschweigend nicht funktionieren.