Witam,
Chciałbym się upewnić odnośnie jednej rzeczy ponieważ spotkałem się z programistami którzy to różnie interpretowali.
A mianowicie, w systemie mam 3 tabele jedna tabela OFERTY, druga to zapis opcji ofert (checkboxy do oferty) i trzecia to samo.
Czyli do bazy leci kilka insertow oczywiście wszystko jest spięte transakcją.
Pierwszy leci insert oferty, tu jeden wpis.
Do kolejnych dwóch tabela wpadaja dane z checkboxów dotyczace tej oferty, i tutaj muszę znac id oferty zeby je wpisac do kolejnych dwóch tabel.
Wiec na logike po pierwszym insercie pobieram last_insert_id i wykorzystuje przy insertach w kolejnych dwóch tabelach.
Czy jest taka możliwosc ze np przy dużym ruchy na stronie ten last_insert_id moze byc bledny i czy jest mozliwosc ze miedzy insert oferty a pozostalymi insertami z transakcji wpasnie jakis inny insert ?
Wiem ze niektórzy zabezpieczali się tak ze robili specjalny hash który wpisywali do tabeli w moim przypadku OFERTY, pozniej odpytywali tabele o id wpisanego wiersza z danych hashem i mieli 100% gwarancji ze zwrocony zostanie prawidłowy id oferty. Ale czy to jest konieczne?
Wg mnie kazdy user wchodzący na strone dostaje inny identyfikator polaczenia i nie ma mozliwosci aby wpadły w tym czasie inne inserty czy mam racje?
Podsumowywujac jezeli robie:
START TRANSAKCJI
$pdo->exec(INSERT do tabeli OFERTY);
last_id = $pdo->lastInsertId();
$pdo->exec(INSERT do drugiej Tabeli z wykorzystaniem last_id);
$pdo->exec(INSERT do trzeciej Tabeli z wykorzystaniem last_id);
KONIEC TRANSAKCJI
Czy takie rozwiązanie jest pewne?
Dzieki za rady