Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es möglich, die eingefügte Zeile nacheinander einzufügen und dann auszuwählen?

WENN SIE INNODB VERWENDEN:

Wenn Sie INNODB verwenden, sollte sie mit dem SELECT zurückgegeben worden sein, da Sie überprüft haben, dass die Zeile eingefügt wurde, solange das SELECT den Schlüssel der tatsächlich eingefügten Zeile abfragte. (Sind Sie sicher, dass Sie keine Funktion wie INSERT DELAYED verwenden? Das könnte verhindern, dass die Zeile zurückgegeben wird.)

WENN SIE MYISAM VERWENDEN:

Da MyISAM keine Transaktionen unterstützt, sollte SELECT die Einfügung zurückgeben, aber ich kann nichts finden, was besagt, dass dies tatsächlich garantiert ist.

HINWEIS:Die erste unten aufgeführte URL gibt an, wenn Sie MYISAM verwenden (der Standardwert gemäß diesem Link), INSERTS wird die Tabelle sperren. Die zweite URL besagt jedoch, dass die durch eine Einfügung gesetzte Sperre eine lesbare Sperre ist, sodass das Lesen der Tabelle nicht verhindert werden sollte.

http://www.sitepoint.com/mysql-fehler-php-entwickler/

http://aarklondatabasetrivia .blogspot.com/2009/04/how-to-lock-and-unlock-tables-in-mysql.html

WENN SIE INNODB VERWENDEN (FORTSETZUNG):

    Wenn AUTOCOMMIT in Ihrem System verwendet wird (ich bin mir nicht sicher), sollten Sie die ausgewählte Zeile gesehen haben (diese Frage besagt, dass die eingefügte Zeile als zur Datenbank hinzugefügt bestätigt wurde).

    Wenn eine Transaktion verwendet wird, muss die Transaktion festgeschrieben worden sein (diese Frage besagt, dass die eingefügte Zeile als zur Datenbank hinzugefügt bestätigt wurde).

    Sind Sie sicher, dass die beim ersten Mal ausgeführte SELECT-Abfrage dieselbe ist wie beim zweiten Mal?

    Sind Sie sicher, $user['social_id'] ist derselbe Wert nach dem INSERT und zum Zeitpunkt des SELECT?

    Wenn Sie aus irgendeinem Grund INSERT DELAYED verwenden, wird die Zeile möglicherweise nicht zurückgegeben

HINWEISE:Gemäß dieser URL werden, wenn Sie eine Transaktion gestartet haben, die ausgewählten Zeilen in der nächsten SELECT-Anweisung angezeigt (nicht in PHP):

http://zetcode.com/databases/mysqltutorial/transactions/

Diese Anweisung impliziert, dass Sie AUTOCOMMIT nicht setzen müssen, wenn Sie eine Transaktion beginnen:

"MySQL schreibt auch automatisch Anweisungen fest, die nicht Teil einer Transaktion sind."

Diese URL beschreibt, wie Sie eine Transaktion in PHP starten:

PHP + MySQL-Transaktionsbeispiele