1) Alle ændringer, du foretager, er synlige inden for samme transaktion. Hvis du gør
START TRANSACTION;
INSERT INTO MyTable VALUES ('Hi there');
SELECT * FROM MyTable;
dit output vil inkludere 'Hej der'. Men hvis du starter en anden database-forbindelse, vil den nye række ikke blive vist, før du foretager din transaktion fra den første forbindelse. Prøv at lege med dette ved at bruge to database-forbindelser ved hjælp af kommandolinjen.
Du kan ikke se effekten på dit websted, fordi du ikke kan have den samme transaktion inden for to database-forbindelser (en ny db-forbindelse vil blive oprettet i begyndelsen af din anmodning).
2) Alle transaktioner, der ikke er forpligtet, vil blive rullet tilbage, når forbindelsen til databasen lukkes. Så hvis dette er dine to eneste spørgsmål, er der ingen forskel. Der er dog forskel på
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, disse er alle ens.