Temat: getLastInsertID

Cześć,

Mam pytanie. Czy jest to bezpieczna funkcja? Chodzi mi o to czy jeżeli w jednej funkcji zapiszę jakieś dane w tablicy model->save($data), to czy teraz pobierając model->getLastInsertId() id ostatnio dodanego rekordu, na 100% otrzymam prawidłową wartość, czy cake nie pozwoli, żeby między wywołaniami obu tych funkcji, nikt inny nie dodał nowych danych? Jeżeli nie, to w jaki sposób mogę otrzymać identyfikator tego rekordu? Dodam, że korzystam z mysql i tablic typu myIsam.

Heh jednak wygooglowałem, model->id wystarczy, jakby ktoś chciał wiedzieć..

Mimo to i tak chciałbym wiedzieć, jak działa interpreter php-a. Czy wywołana funkcja nie może być przerwana przez inną?

Ostatnio edytowany przez kaczuss (2009-05-16 19:41:45)

2

Odp: getLastInsertID

To nie jest ewentualna kwestia PHP i wywłaszczania w niej funkcji (getLastInsertId jest nakładką na mysql_insert_id()), tylko SBD. Wstawianie bardziej skomplikowanych danych dla bezpieczeństwa trzeba dać w transakcji (i zablokować tablicę), wtedy masz pewność, że będzie ok.

3

Odp: getLastInsertID

Nie do konca wiem oco chodzi ale z tego co cie zrozumialem to getLastInsert zwroci ci ID ostatnio dodanego rekordu ale przez Ciebie (przez twoja sesję). W miedzyczasie moze powstac tysiace wpisow dodanych przez inne sesje MySql. Tak wiec jezeli chcesz ostatni rekord dodany przez kogokolwiek to nie - nie jest to mozliwe (praktycznie bedzie to twoj rekord ale pewnosci miec nie mozesz smile )

4

Odp: getLastInsertID

dzięki za info;]