sql >> Databasteknik >  >> RDS >> Mysql

Mysql-transaktion:commit och rollback

1) Alla ändringar du gör är synliga inom samma transaktion. Om du gör det

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

din utdata kommer att innehålla "Hej där". Men om du startar en andra databasanslutning kommer den nya raden inte att visas förrän du genomför din transaktion från den första anslutningen. Försök att spela med detta med två databasanslutningar med hjälp av kommandoraden.

Du ser inte effekten på din webbplats eftersom du inte kan ha samma transaktion inom två databasanslutningar (en ny db-anslutning kommer att göras i början av din förfrågan).

2) Alla transaktioner som inte har genomförts kommer att återställas när anslutningen till databasen stängs. Så om det här är dina enda två frågor är det ingen skillnad. Det finns dock en skillnad mellan

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, alla dessa är likadana.



  1. SQL Server:använd parametern i CREATE DATABASE

  2. Jämför failover-tider för Amazon Aurora, Amazon RDS och ClusterControl

  3. Hur man skapar och tar bort databaser och tabeller i PostgreSQL

  4. SQL-kommando för att lista och visa alla databaser i MySQL och MariaDB