pl sql transactions commit
Další informace o transakcích PL SQL s příklady příkazů COMMIT, ROLLBACK a SAVEPOINTS:
V tomto článku budeme pokračovat s Série PL / SQL . V PL SQL balíček tutorial, jsme se dozvěděli o balíčku, jeho výhodách, specifikacích a struktuře.
Zde prozkoumáme transakce PL SQL a jejich charakteristiky. Budeme diskutovat o některých příkazech PL / SQL, jako jsou COMMIT, ROLLBACK, SAVEPOINTS atd., Které souvisejí s transakcemi PL SQL.
Dozvíme se také o příkazech LOCK TABLe a AUTOCOMMIT v PL SQL.
Začněme s diskusí !!
Co se naučíte:
Transakce PL SQL
Atomová složka práce v databázi, která má více příkazů SQL, se nazývá transakce. Označuje se jako atomový, protože jakmile dojde ke změnám ovlivněným příkazy SQL, mohou být buď potvrzeny (neurčité aktualizace databáze), nebo vráceny zpět (vrátit aktualizace databáze).
Příkaz SQL musí být potvrzen, jinak může být odvolán a všechny úpravy, které měl příkaz SQL provést, zůstanou vráceny. Pokud se program PL / SQL zastaví uprostřed transakce, nemá to žádný dopad na databázi a obnoví se do původního stavu.
COMMIT a ROLLBACK se starají o to, že změny v databázi jsou věčné nebo vrácené. Příkaz SAVEPOINT ukazuje na aktuální pozici ve zpracování transakcí.
Spusťte zpracování transakce
Každá transakce má začátek a ukončení.
Následující události označují začátek transakce:
- Po připojení k databázi se provede první příkaz SQL.
- Po dokončení předchozího příkazu SQL se provede nový příkaz SQL.
Ukončit zpracování transakce
Každý program PL / SQL by měl mít příkaz COMMIT nebo ROLLBACK. Záleží pouze na logice programování, zda bychom měli po transakci použít COMMIT nebo ROLLBACK.
Pokud se příkazy COMMIT nebo ROLLBACK nepoužívají, záleží na hostitelském prostředí, jaký by měl být konečný stav databáze. Například, v prostředí SQL * PLUS, pokud je blok kódu PL / SQL bez příkazu COMMIT nebo ROLLBACK, bude stav databáze záviset na bloku kódu, který je spuštěn hned poté.
Pokud v prostředí Oracle zahrneme příkaz COMMIT nebo provedeme příkaz DISCONNECT, EXIT nebo QUIT po spuštění definice dat nebo dotazu na kontrolu dat, transakce se potvrdí. Pokud zahrneme také příkaz ROLLBACK, transakce je vrácena zpět.
Transakci lze tedy ukončit z důvodu níže uvedených scénářů:
jak spustit soubor jnlp v systému Windows 10
- Je proveden příkaz ROLLBACK nebo COMMIT.
- Dotaz DDL ( například, je proveden příkaz k vytvoření tabulky), po kterém je ve výchozím nastavení spuštěn COMMIT.
- Dotaz DCL ( například, je proveden příkaz GRANT), po kterém je ve výchozím nastavení spuštěn COMMIT.
- Uživatel ukončí připojení k databázi.
- Uživatel spustí příkaz EXIT, aby vyšel z SQL * PLUS, po kterém se ve výchozím nastavení provede COMMIT.
- SQL * PLUS narazí na neobvyklé ukončení, po kterém je ve výchozím nastavení spuštěn ROLLBACK.
- Dotaz DML se nespustí úspěšně, po kterém je ve výchozím nastavení spuštěn ROLLBACK, aby se databáze vrátila do původního stavu.
ZÁVAZEK pro trvalé změny
Příkaz COMMIT je schopen ukončit současnou transakci a provést trvalou změnu provedenou transakcí. Jakmile je proveden příkaz COMMIT, můžeme získat pozměněné údaje.
Při spuštění příkazu COMMIT budou všechny ovlivněné řádky tabulky uvolněny ze zámků. Pomáhá nám také zbavit se SAVEPOINTU. Příkaz COMMIT může být volitelně doprovázen příkazem WORK (COMMIT WORK), který je přidán pouze ke zlepšení čitelnosti kódu.
V případě, že transakce selže v době COMMIT a stav transakce není znám, je v té době COMMENT text v kódu PL / SQL uložen v datovém slovníku spolu s id transakce.
Syntaxe transakce COMMIT:
COMMIT;
Uvažujme o tabulce s názvem UČITELÉ.
Vytvořili jsme tabulku UČITELÉ pomocí níže uvedeného příkazu SQL:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
Vložte hodnoty do této tabulky a poté transakci potvrďte následujícím způsobem:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Dále se provede níže uvedený dotaz:
SELECT * FROM TEACHERS;
Výstup:
ROLLBACK pro vrácení změn
Pokud je aktuální transakce ukončena příkazem ROLLBACK, vrátí zpět všechny úpravy, které mají v transakci proběhnout.
ROLLBACK prohlášení má následující funkce, jak je uvedeno níže:
- Databáze se obnoví v původním stavu pomocí příkazu ROLLBACK v případě, že jsme omylem odstranili důležitý řádek z tabulky.
- V případě výjimky, která vedla k selhání provádění příkazu SQL, nám příkaz ROLLBACK umožňuje přeskočit na počáteční bod programu, odkud můžeme přijmout nápravná opatření.
- Aktualizace provedené v databázi bez příkazu COMMIT lze odvolat příkazem ROLLBACK.
Syntaxe transakce ROLLBACK:
ROLLBACK;
Syntaxe transakce ROLLBACK s SAVEPOINT:
ROLLBACK (TO SAVEPOINT );
Tady je save_n je název SAVEPOINT.
Zvažme tabulku UČITELÉ, kterou jsme vytvořili dříve.
Implementace kódu pomocí ROLLBACK:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Dále se provede níže uvedený dotaz:
SELECT * FROM TEACHERS;
Výstup výše uvedeného kódu by měl být:
Ve výše uvedeném kódu jsme provedli příkaz DELETE, který má odstranit záznam učitele s CODE rovným 3. Kvůli příkazu ROLLBACK to však nemá žádný dopad na databázi a mazání se neprovádí.
SAVEPOINT pro vrácení částečných změn
SAVEPOINT udává jméno a identifikaci aktuálnímu bodu zpracování transakce. Obvykle je přidružen k příkazu ROLLBACK. Umožňuje nám vrátit některé části transakce tím, že se nedotkneme celé transakce.
Když aplikujeme ROLLBACK na SAVEPOINT, všechny SAVEPOINTS zahrnuté po tomto konkrétním SAVEPOINTu budou odstraněny (to znamená, že jsme označili tři SAVEPOINTS a aplikovali ROLLBACK na druhý SAVEPOINT, automaticky bude odstraněn třetí SAVEPOINT.)
Příkaz COMMIT nebo ROLLBACK odstraní všechny SAVEPOINTS. Názvy dané SAVEPOINT jsou nedeklarované identifikátory a lze je v transakci několikrát znovu použít. V transakci dochází k pohybu SAVEPOINT ze staré do současné polohy.
ROLLBACK aplikovaný na SAVEPOINT ovlivňuje pouze probíhající část transakce. SAVEPOINT tedy pomáhá rozdělit zdlouhavé transakce na malé části umístěním ověřovacích bodů.
Syntaxe transakce SAVEPOINT:
software pro vzdálenou plochu pro Windows 7
SAVEPOINT ;
Tady, save_n je název SAVEPOINT.
Zvažme znovu tabulku UČITELÉ, kterou jsme vytvořili dříve.
Implementace kódu ROLLBACK WITH SAVEPOINT:
INSERT INTO TEACHERS VALUES (4, 'CYPRESS', 'MICHEAL'); SAVEPOINT s; INSERT INTO TEACHERS VALUES (5, 'PYTHON', 'STEVE'); INSERT INTO TEACHERS VALUES (6, 'PYTEST', 'ARNOLD'); ROLLBACK TO s; INSERT INTO TEACHERS VALUES (7, 'PROTRACTOR', 'FANNY'); COMMIT;
Dále se provede níže uvedený dotaz:
SELECT * FROM TEACHERS;
Výstup výše uvedeného kódu by měl být:
Ve výše uvedeném kódu, po ROLLBACK se SAVEPOINT s je použito, byly vloženy pouze další dva řádky, tj. učitelé s KÓDEM 4, respektive 7. Upozorňujeme, že během vytváření tabulky byli přidáni učitelé s kódem 1, 2 a 3.
LOCK tabulka v PL / SQL
Příkaz LOCK v PL / SQL umožňuje uzamčení celé databáze v režimu uzamčení. To určuje, zda chceme sdílet nebo zakázat přístup k tabulce.
Vezměme si příklad tabulky zámků:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Výše uvedený dotaz uzamkne tabulku UČITELÉ v režimu sdílení řádků. Režim sdílení řádků dává povolení k souběžnému použití tabulky. Neumožňuje uživatelům uzamknout celou tabulku pro individuální použití. Po provedení příkazu COMMIT nebo ROLLBACK se zámky tabulky uvolní. Klíčové slovo NOWAIT se používá ke zmínce, že databáze nesmí čekat na uvolnění zámku.
zahrnují typy testování výpočetního systému
Režim zámku je důležitý k závěru, jaké další zámky lze použít na stůl.
Pojďme si probrat některé LOCK režimy dostupné v PL / SQL:
Sl. Ne | REŽIM ZÁMKU | ÚČEL |
---|---|---|
jeden | SDÍLET ŘÁD | Umožňuje více uživatelům používat tabulku současně. Uživatelé však nemají povoleno uzamknout celou tabulku pro výhradní použití. |
dva | ŘADA EXKLUZIVNĚ | Umožňuje více uživatelům používat tabulku současně. Uživatelé však nemají povoleno uzamknout celou tabulku pro výhradní použití v režimu sdílení. |
3 | SDÍLET AKTUALIZACI | Umožňuje více uživatelům používat tabulku současně. Uživatelé však nemají povoleno uzamknout celou tabulku pro výhradní použití. |
4 | PODÍL | Umožňuje nám provádět více dotazů na stole současně. Uživatelům však není dovoleno upravovat uzamčenou tabulku. |
5 | SDÍLTE ŘADU EXKLUZIVNĚ | Umožňuje uživatelům s přístupem pouze ke čtení k tabulce. Nesmějí upravovat tabulku ani ji uzamknout v režimu sdílení. |
6 | VÝHRADNÍ | Umožňuje pouze provádění dotazů na uzamčené tabulce. |
Automatická kontrola transakcí v PL / SQL
Můžeme provést konfiguraci tak, že se příkaz COMMIT ve výchozím nastavení spustí, kdykoli se spustí příkaz INSERT nebo DELETE. To se provádí tak, že proměnnou prostředí AUTOCOMMIT nastavíte na ZAPNUTO.
Syntax:
SET AUTOCOMMIT ON;
To lze opět vypnout nastavením proměnné prostředí AUTOCOMMIT na VYPNUTO.
Syntax:
SET AUTOCOMMIT OFF;
Často kladené otázky a odpovědi
Otázka č. 1) Co je transakce v PL SQL?
Odpovědět: Transakce je skupina příkazů pro výpočet dat SQL, které fungují jako atomová jednotka. Všechny transakce mají atomovou povahu, které jsou buď potvrzeny, nebo odvolány.
Otázka č. 2) Co je COMMIT v PL SQL?
Odpovědět: Příkaz COMMIT se používá k provedení trvalé změny v databázi aktuální transakcí. Umožní uživatelům viditelnost úpravy databáze.
Otázka č. 3) Jak ukončíte transakci?
Odpovědět: Transakce končí výslovně příkazem COMMIT nebo ROLLBACK. Lze jej také bezpodmínečně ukončit po spuštění příkazu DML.
Otázka č. 4) Můžeme spáchat spouštěč?
Odpovědět: Ano, můžeme aktivaci aktivovat pouze v případě, že je tato aktivační transakce samostatná od její nadřazené transakce.
Otázka č. 5) Je VYBRAT transakci?
Odpovědět: Ano, SELECT je transakce se všemi charakteristikami transakce.
Otázka č. 6) Jak mohu vrátit transakci v Oracle?
Odpovědět: Abychom mohli vrátit transakci v Oracle, musíme spustit příkaz ROLLBACK. Vrátí zpět všechny změny provedené transakcí do databáze a obnoví se do původního stavu.
Závěr
V tomto kurzu jsme podrobně diskutovali některé základní koncepty transakcí PL SQL, které jsou nezbytné pro správu transakcí PL SQL. Pokryli jsme následující témata uvedená níže:
- Transakce.
- Použití příkazu COMMIT v transakci.
- Co je ROLLBACK v transakci?
- Použití ROLLBACK se SAVEPOINT v transakci.
- LOCK tabulka.
Doporučené čtení
- Výukový program PL SQL pro začátečníky s příklady | Co je to PL / SQL
- Vývoj databázových aplikací Oracle: Oracle SQL & PL / SQL
- Balíček PL SQL: Výukový program balíku Oracle PL / SQL s příklady
- Rozdíl mezi SQL Vs MySQL Vs SQL Server (s příklady)
- Formát PL SQL Datetime: Funkce data a času v PL / SQL
- Kompletní průvodce zpracováním výjimek PL SQL s příklady
- Přesné rozdíly mezi SQL a NoSQL a vědět, kdy použít NoSQL a SQL
- Výukový program Oracle Database - Co je Oracle Database?