sql >> Databasteknik >  >> RDS >> Mysql

Är det möjligt att INFOGA och sedan VÄLJA den infogade raden efter varandra?

OM DU ANVÄNDER INNODB:

Om du använder INNODB, eftersom du verifierade att raden infogades, borde den ha returnerats med SELECT, så länge som SELECT sökte efter nyckeln till den faktiska raden som infogades. (Är du säker på att du inte använder en funktion som INSERT DELAYED? Det kan förhindra att raden returneras.)

OM DU ANVÄNDER MYISAM:

Eftersom MyISAM inte stöder transaktioner bör SELECT returnera infogningen, men jag kan inte hitta något som säger att detta faktiskt är garanterat.

OBS:Den första URL-adressen nedan anger om du använder MYISAM (standard enligt denna länk), INSERTS låser tabellen. Den andra URL:en anger dock att låset som placeras av en infogning är ett läsbart lås, så det borde inte ha hindrat tabellen från att läsas.

http://www.sitepoint.com/mysql-mistakes-php-developers/

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

OM DU ANVÄNDER INNODB (Fortsättning):

    Om AUTOCOMMIT används i ditt system (jag är inte säker) borde du ha sett den valda raden (denna fråga anger att den infogade raden har verifierats som att den har lagts till i databasen).

    Om en transaktion används måste transaktionen ha genomförts (denna fråga anger att den infogade raden har verifierats som att den har lagts till i databasen).

    Är du säker på att SELECT-frågan som körs första gången är densamma som andra gången?

    Är du säker på att $user['social_id'] är samma värde efter INSERT och vid tidpunkten för SELECT?

    Om du av någon anledning använder INSERT DELAYED, kanske raden inte returneras

ANMÄRKNINGAR:Enligt denna URL, OM du har startat en transaktion, visas de valda raderna i nästa SELECT-sats (inte i PHP):

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

Detta uttalande innebär att om du påbörjar en transaktion behöver du inte ställa in AUTOCOMMIT:

"MySQL begår också automatiskt uttalanden som inte är en del av en transaktion."

Denna URL beskriver hur man startar en transaktion i PHP:

Exempel på PHP + MySQL-transaktioner




  1. Hur kombinerar man två rader och beräknar tidsskillnaden mellan två tidsstämpelvärden i MySQL?

  2. Har fler problem med mysqli. Numeriska data i resultat

  3. Vilken SQL-fråga är bättre, MATCH MOT eller GILLA?

  4. Är det möjligt att skicka en variabel till ett lagrat proceduranrop i mysql?