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.