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

MySQL InnoDB - Zmatený z transakcí

Pokud je problém něco jako „Tato vložka porušila jedinečný klíč ", potvrzení proběhne. Musíte sami zkontrolovat, zda dotaz vrátil chyby, a pokud ano, ROLLBACK .

Pokud je problémem například neočekávané vypnutí serveru, dotazy 1 a 2 se neprovedou.

Samozřejmě, protože vaše 3 dotazy jsou stejné, je to hloupý příklad. Změňte alespoň lid vidět. Proč neuděláte rychlý test?

Upravit:upravili jste svůj dotaz ohledně účelu transakcí.

Účelem transakcí je skutečně udržovat databázi v konzistentním stavu (přečtěte si na ACID ), ale je na programátorovi, aby rozhodl, co je konzistentní. Podívejte se na odpověď prodigitalson abyste viděli příklad možného php způsobu zachycení chyb, který to udělá za vás. Ale když jste v transakci, ostatní procesy neuvidí změny, které vaše transakce provádí – proto jsou atomické a izolované.

CREATE TABLE `testkeys` (
  `lid` INT,
  `column_name` VARCHAR(50),
  UNIQUE KEY `testuniq` (`lid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

BEGIN;
INSERT INTO testkeys(lid,column_name) VALUES(1,'test 1');
INSERT INTO testkeys(lid,column_name) VALUES(2,'test 2');
INSERT INTO testkeys(lid,column_name) VALUES(3,'test 3');
INSERT INTO testkeys(lid,column_name) VALUES(2,'test 2b');
COMMIT;


  1. Php Mysql vyhledávání mezi dvěma daty

  2. UTF-8 s mysql a php ve švédských znacích freebsd (åäö)

  3. Vložte více záznamů do SQL, kde hodnoty jsou všechny kombinace definovaných rozsahů v jediném dotazu

  4. Lehká instalace WordPress:Jak nainstalovat WordPress s SQLite