[MYSQL] last_insert_id pytanie.

0

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

0

Nie bardzo znam się na mysql, ale temat mnie zaciekawił w kontekście porównań do działania bazy Oracle.

Tu znajdziesz odpowiedź na swoje pytanie:

http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id

1 użytkowników online, w tym zalogowanych: 0, gości: 1