JEŚLI KORZYSTASZ Z INNODB:
Jeśli używasz INNODB, ponieważ zweryfikowałeś, że wiersz został wstawiony, powinien on zostać zwrócony za pomocą SELECT, o ile SELECT odpytywał klucz rzeczywistego wstawionego wiersza. (Czy na pewno nie korzystasz z funkcji takiej jak WSTAWIENIE OPÓŹNIONE? Może to uniemożliwić zwrócenie wiersza).
JEŚLI UŻYWASZ MYISAM:
Ponieważ MyISAM nie obsługuje transakcji, SELECT powinien zwrócić wstawkę, ale nie mogę znaleźć niczego, co stwierdzałoby, że jest to faktycznie gwarantowane.
UWAGA:Pierwszy adres URL wymieniony poniżej wskazuje, że używasz MYISAM (domyślnie zgodnie z tym łączem), WSTAWKI zablokują tabelę. Jednak drugi adres URL stwierdza, że blokada umieszczona przez wstawkę jest blokadą czytelną, więc nie powinno to uniemożliwiać odczytu tabeli.
http://www.sitepoint.com/mysql-mistakes-php-developers/
http://aarklondatabasetrivia .blogspot.com/2009/04/jak-zablokować-i-odblokować-tabele-w-mysql.html
JEŚLI KORZYSTASZ Z INNODB (CIĄG DALSZY):
- Jeśli w twoim systemie jest używana funkcja AUTOCOMMIT (nie jestem pewien), powinieneś zobaczyć wybrany wiersz (to pytanie mówi, że wstawiony wiersz został zweryfikowany jako dodany do bazy danych).
- Jeśli transakcja jest w użyciu, transakcja musi zostać zatwierdzona (pytanie stwierdza, że wstawiony wiersz został zweryfikowany jako dodany do bazy danych).
Czy na pewno zapytanie SELECT, które jest wykonywane za pierwszym razem, jest takie samo jak drugie?
Czy na pewno $user['social_id']
czy jest ta sama wartość po INSERT i podczas SELECT?
- Jeśli odwołujesz się do wiersza wstawionego w innej transakcji, a nie w sesji, która wykonuje wstawianie, ten adres URL:
http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
stwierdza „musisz wykonać „odczyt bez zobowiązań”, wybierz, aby znaleźć właśnie wstawione wiersze:”
TJ. ustaw sesję POZIOM IZOLACJI TRANSAKCJI przeczytaj niezobowiązujący;
http://dev.mysql.com/doc/refman /5.0/pl/set-transakcja.html
(Ta funkcja może zależeć od używanej wersji MYSQL)
- Jeśli z jakiegoś powodu używasz INSERT DELAYED, wiersz może nie zostać zwrócony
UWAGI:Zgodnie z tym adresem URL, jeśli rozpocząłeś transakcję, wybrane wiersze są pokazane w następnej instrukcji SELECT (nie w PHP):
http://zetcode.com/databases/mysqltutorial/transactions/
To stwierdzenie oznacza, że jeśli rozpoczniesz transakcję, nie musisz ustawiać AUTOCOMMIT:
"MySQL automatycznie zatwierdza również oświadczenia, które nie są częścią transakcji."
Ten adres URL opisuje, jak rozpocząć transakcję w PHP:
Przykłady transakcji PHP + MySQL