sql >> Database >  >> RDS >> Mysql

Is het mogelijk om de ingevoegde rij een voor een in te voegen en vervolgens te SELECTEREN?

ALS U INNODB GEBRUIKT:

Als je INNODB gebruikt en je hebt geverifieerd dat de rij was ingevoegd, had deze moeten worden geretourneerd met de SELECT, zolang de SELECT de sleutel van de daadwerkelijke rij die was ingevoegd opvraagde. (Weet je zeker dat je geen functie zoals INSERT DELAYED gebruikt? Dat kan voorkomen dat de rij wordt geretourneerd.)

ALS U MYISAM GEBRUIKT:

Aangezien MyISAM geen transacties ondersteunt, zou de SELECT de insert moeten retourneren, maar ik kan niets vinden dat stelt dat dit daadwerkelijk gegarandeerd is.

OPMERKING:De eerste URL die hieronder wordt vermeld, geeft aan of u MYISAM gebruikt (de standaardinstelling volgens deze link), INSERTS zal de tabel vergrendelen. De tweede URL geeft echter aan dat het slot dat door een insert is geplaatst een leesbaar slot is, dus dat had niet moeten voorkomen dat de tabel werd gelezen.

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

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

ALS U INNODB GEBRUIKT (VERVOLG):

    Als AUTOCOMMIT in uw systeem wordt gebruikt (ik weet het niet zeker), had u de geselecteerde rij moeten zien (deze vraag geeft aan dat de ingevoegde rij is geverifieerd als zijnde toegevoegd aan de database).

    Als een transactie in gebruik is, moet de transactie zijn vastgelegd (deze vraag geeft aan dat de ingevoegde rij is geverifieerd als zijnde toegevoegd aan de database).

    Weet je zeker dat de SELECT-query die de eerste keer wordt uitgevoerd dezelfde is als de tweede keer?

    Weet je het zeker $user['social_id'] is dezelfde waarde na de INSERT en op het moment van de SELECT?

    Als u om de een of andere reden INSERT DELAYED gebruikt, wordt de rij mogelijk niet geretourneerd

OPMERKINGEN:Volgens deze URL, ALS u een transactie bent gestart, worden de geselecteerde rijen weergegeven in de volgende SELECT-instructie (niet in PHP):

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

Deze verklaring houdt in dat als u een transactie begint, u AUTOCOMMIT niet hoeft in te stellen:

"MySQL legt ook automatisch verklaringen vast die geen deel uitmaken van een transactie."

Deze URL beschrijft hoe u een transactie in PHP start:

voorbeelden PHP + MySQL-transacties




  1. Hoe te bestellen op maandnaam in PostgreSQL of Oracle

  2. Rethink Flask - Een eenvoudige takenlijst mogelijk gemaakt door Flask en RethinkDB

  3. Inleiding tot MaxScale-beheer met maxctrl voor MariaDB Cluster

  4. Hoe u het verschil tussen twee datums kunt afronden naar uren