SQL: Jaký je rozdíl mezi transakcí a dotazem?


Odpověď 1:
  • Atomicita (všechny příkazy v transakci jsou provedeny, nebo žádné) Konzistence (databáze není nikdy viditelná v nekonzistentním stavu) Izolace (transakce neovlivní jiné transakce) Trvalá (jakmile jsou potvrzeny, změny transakce jsou trvalé)
ZAČÁTEK TRANSAKCE; AKTUALIZUJTE účty SET zůstatek = zůstatek + 100 WHERE account_id = 98; UPDATE účty SET zůstatek = zůstatek - 100 WHERE account_id = 42; SPÁCHAT;

Odpověď 2:

Poznámka: Ve většině (pokud ne všechny?) RDMS, pokud explicitně nedefinujete transakci, bude každý dotaz sám o sobě transakčně úplný, ale skupina nebude.

tj

update FOO set bar = Bar + 1

odstranit z FOO, kde BAZ = 1000

je transakčně odlišný od

začít tran

update FOO set bar = Bar + 1

odstranit z FOO, kde BAZ = 1000

odevzdat tran

V prvním případě, pokud řekněme, že proces je zastaven uprostřed mazání, po vrácení mazání bude aktualizace stále provedena. Ve druhém případě bude vrácena zpět, pokud bude vrácení odstraněno zpět.


Odpověď 3:

Poznámka: Ve většině (pokud ne všechny?) RDMS, pokud explicitně nedefinujete transakci, bude každý dotaz sám o sobě transakčně úplný, ale skupina nebude.

tj

update FOO set bar = Bar + 1

odstranit z FOO, kde BAZ = 1000

je transakčně odlišný od

začít tran

update FOO set bar = Bar + 1

odstranit z FOO, kde BAZ = 1000

odevzdat tran

V prvním případě, pokud řekněme, že proces je zastaven uprostřed mazání, po vrácení mazání bude aktualizace stále provedena. Ve druhém případě bude vrácena zpět, pokud bude vrácení odstraněno zpět.


Odpověď 4:

Poznámka: Ve většině (pokud ne všechny?) RDMS, pokud explicitně nedefinujete transakci, bude každý dotaz sám o sobě transakčně úplný, ale skupina nebude.

tj

update FOO set bar = Bar + 1

odstranit z FOO, kde BAZ = 1000

je transakčně odlišný od

začít tran

update FOO set bar = Bar + 1

odstranit z FOO, kde BAZ = 1000

odevzdat tran

V prvním případě, pokud řekněme, že proces je zastaven uprostřed mazání, po vrácení mazání bude aktualizace stále provedena. Ve druhém případě bude vrácena zpět, pokud bude vrácení odstraněno zpět.