Diskuze: Transakce
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nejsem si 100% jistý, ale nejspíš to nepůjde. Pokud se v transakci nevykoná nějaký příkaz, měl by se volat rollback. Otázkou je, jak to máš. Jestli se vykoná, ale s null nebo neaktuální hodnotou nebo se nevykoná vůbec. Např získání posledního id by bylo zavádějící.
Ahoj. Pokud to uzavřeš do transakce, tak ty uvidíš ty inserty, ale nikdo
jiný (dokud necomitneš). Pokud ale jeden insert neprojde, tak se v databázi
neukáže ani jeden. Jinak ID můžeš získat hned po insertu.
Například takhle https://www.php.net/…nsert-id.php
Jasně já používám zdejší wrapper, teda už trochu upravený. Takže Id získávám metodou getLastId. Neřeším že by jeden insert selhal. Jde mi čistě jen o to zda to zafunguje správně. Jelikož teoreticky ta data v DB nejsou až do comitu. Tak jestli getLastId vytáhne Id správně v průběhu té transakce.
Ano, funguje to správně. Ty data uvidíš uvnitř transakce, jen je neuvidí nikdo jiný. Plus lastInsertedId by měla automaticky vracet databáze, takže i kdyby tam data nebyly, ID by bylo správné?
Co ti brani zkusit poslat 5 insertu v transakci a zopakovat to 3x, pak neco smazat a pridat dalsich 5? Proste to zkusit? A jo, projde to, dela se to. Kdyz budes chtit chyby, tak je mozna rychlejsi insert po insertu bez transakce. Nebo treba po 20 a kdyz to neprojde, insert po insertu.
Zobrazeno 7 zpráv z 7.