sql >> Databáze >  >> RDS >> Mysql

MYSQL, PHP Vložit do více tabulek v databázi

Protože se tyto dvě vložení provádějí nezávisle, jiný souběžně běžící program může vidět databázi ve stavu, kdy je první vložení dokončeno, ale druhé nikoli.

Zda se jedná o problém nebo ne, závisí na aplikační logice. Ve vašem případě je těžké říci bez dalších informací. Asi ne. Finanční transakce zahrnující dva účty jsou příkladem, kde to je problém:nechcete, aby součet všech zůstatků na účtu byl kdykoli nesprávný.

Pokud si myslíte, že to potřebujete, můžete operaci udělat atomickou za cenu výkonu:jiný program buď uvidí databázi před prvním vložením, nebo po druhém vložení. Funguje to takto:

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

Úložný modul musí podporovat transakce, tj. musí to být InnoDB . Jinak to tiše nebude fungovat.



  1. Název tabulky jako parametr pomocí připraveného příkazu PDO/MySQL

  2. Rozhodněte se mezi monitorováním na základě agenta a monitorováním bez agenta

  3. Nahraďte slovo v textu BLOB pomocí MySQL

  4. MySQL chybný výstup s klauzulí IN a parametrem