602SQL-Úplná dokumentace Index  

Příkaz START TRANSACTION (SQL)

příkaz_START_TRANSACTION ::= START TRANSACTION [ izolace ] [, druh_transakce ] 
izolace ::= ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
druh_transakce ::= READ ONLY | READ WRITE

Tento příkaz zahajuje novou explicitní transakci a určuje její druh a stupeň izolace od ostatních souběžně probíhajících transakcí. Transakce je ukončena buď explicitně (provedením příkazu COMMIT nebo ROLLBACK) nebo implicitním commitem (např. při ALTER TABLE) resp. implicitním rollbackem (obvykle při výskytu chyby).

Příkaz START TRANSACTION vždy nastavuje stupeň izolace a tento stupeň platí až do příštího nastavení (i pro transakce implicitní). Není-li izolace specifikovaná, uplatní se SERIALIZABLE. Není-li specifikován druh transakce, pak je-li specifikována izolace READ UNCOMMITTED, uplatní se READ ONLY, jinak se uplatní READ WRITE.

Je-li tento příkaz proveden v situaci, kdy je explicitní transakce již zahájena, nastane chybový sqlstate 25001. Je-li druh transakce READ ONLY, nelze v transakci provést příkazy UPDATE, DELETE ani INSERT, jinak nastane chybový sqlstate 25006.

Interně SQL server 602SQL implementuje pouze stupně izolace READ COMMITTED a SERIALIZABLE. Při nastavení READ UNCOMMITTED se vnitřně nastaví READ COMMITTED, při nastavení REPEATABLE READ se vnitřně nastaví SERIALIZABLE. Toto chování je plně v souladu s normou.


Rozšíření jazyka SQL proti normě