sql >> Database >  >> RDS >> Mysql

Mysql-transactie:commit en rollback

1) Alle wijzigingen die u aanbrengt, zijn zichtbaar binnen dezelfde transactie. Als je dat doet

START TRANSACTION;
INSERT INTO MyTable VALUES ('Hi there');
SELECT * FROM MyTable;

uw uitvoer zal de 'Hi there' bevatten. Maar als u een tweede database-verbinding start, wordt de nieuwe rij pas weergegeven als u uw transactie vanuit de eerste verbinding vastlegt. Probeer hiermee te spelen door twee database-verbindingen te gebruiken via de opdrachtregel.

U ziet het effect niet in uw website omdat u niet dezelfde transactie kunt hebben binnen twee database-verbindingen (een nieuwe db-verbinding wordt gemaakt aan het begin van uw aanvraag).

2) Alle transacties die niet zijn vastgelegd, worden teruggedraaid wanneer de verbinding met de database wordt verbroken. Dus als dit uw enige twee vragen zijn, is er geen verschil. Er is echter een verschil tussen

START TRANSACTION;
INSERT INTO MyTable VALUES ('This one would be discarded on rollback');
ROLLBACK;
INSERT INTO MyTable VALUES ('This one will be permanent because not within transaction');  

3) Ja, deze zijn allemaal hetzelfde.



  1. Hoe een door de gebruiker gedefinieerde uitzondering te declareren met behulp van een uitzonderingsvariabele in Oracle Database?

  2. Hoe kunt u zien of een PL/SQL-pakket, procedure of functie wordt gebruikt?

  3. Probleem bij het opslaan van breedte- en lengtegraadwaarden in de MySQL-database

  4. Langzame query-log inschakelen in PostgreSQL