pl sql transactions commit
Lees meer over de PL SQL-transacties met voorbeelden van COMMIT-, ROLLBACK- en SAVEPOINTS-instructies:
In dit artikel gaan we verder met PL / SQL-reeks In de PL SQL-pakket tutorial hebben we geleerd over Pakket, de voordelen, specificaties en structuur.
Hier zullen we PL SQL-transacties en hun kenmerken onderzoeken. We zullen enkele PL / SQL-instructies bespreken, zoals COMMIT, ROLLBACK, SAVEPOINTS enzovoort, die betrekking hebben op PL SQL-transacties.
We zullen ook leren over LOCK TABLe en AUTOCOMMIT-instructies in PL SQL.
Laten we beginnen met de discussie !!
Wat je leert:
- PL SQL-transacties
- Start de transactieverwerking
- Transactieverwerking beëindigen
- COMMIT voor permanente veranderingen
- ROLLBACK om wijzigingen ongedaan te maken
- SAVEPOINT Voor het ongedaan maken van gedeeltelijke wijzigingen
- LOCK-tabel in PL / SQL
- Automatische transactiecontrole in PL / SQL
- Veelgestelde vragen en antwoorden
- Gevolgtrekking
PL SQL-transacties
Een atomaire component van het werk in een database met meerdere SQL-instructies wordt een transactie genoemd. Het wordt atomisch genoemd, omdat zodra er wijzigingen zijn die worden beïnvloed door SQL-instructies, deze ofwel kunnen worden vastgelegd [onbepaalde updates van de database] of teruggedraaid [updates aan de database ongedaan maken].
Een SQL-instructie moet worden vastgelegd, anders kan het worden teruggedraaid en blijven alle wijzigingen die de SQL-instructie had moeten doen, ongedaan. Als het PL / SQL-programma midden in de transactie wordt gestopt, heeft dit geen invloed op de database en wordt deze in de oorspronkelijke staat hersteld.
COMMIT en ROLLBACK zorgen ervoor dat de wijzigingen in de database eeuwig zijn of ongedaan worden gemaakt. SAVEPOINT-instructie verwijst naar de huidige positie in transactieverwerking.
Start de transactieverwerking
Elke transactie heeft een start en een beëindiging.
De volgende incidenten markeren het begin van een transactie:
- Na de verbinding met de database wordt de eerste SQL-instructie uitgevoerd.
- Een nieuwe SQL-instructie wordt uitgevoerd nadat de vorige SQL-instructie is voltooid.
Transactieverwerking beëindigen
Elk PL / SQL-programma moet een COMMIT- of ROLLBACK-instructie hebben. Het hangt alleen af van de programmeerlogica of we een COMMIT of een ROLLBACK moeten gebruiken na de transactie.
Als COMMIT- of ROLLBACK-instructies niet worden gebruikt, hangt het van de hostomgeving af hoe de eindtoestand van de database zou moeten zijn. Bijvoorbeeld, in een SQL * PLUS-omgeving, als een PL / SQL-codeblok geen COMMIT- of ROLLBACK-instructie heeft, zal de status van de database afhangen van het codeblok dat direct daarna wordt uitgevoerd.
Als we in een Oracle-omgeving een COMMIT-instructie opnemen of de DISCONNECT-, EXIT- of QUIT-opdracht uitvoeren na het uitvoeren van een gegevensdefinitie of gegevensbeheerquery, wordt de transactie vastgelegd. Als we ook een ROLLBACK-instructie opnemen, wordt de transactie ongedaan gemaakt.
Een transactie kan dus worden beëindigd vanwege onderstaande scenario's:
hoe de uitzondering van de arrayindex buiten de grenzen in java op te lossen
- Er wordt een ROLLBACK- of COMMIT-instructie uitgevoerd.
- Een DDL-zoekopdracht [ bijvoorbeeld, a table creation statement] wordt uitgevoerd, waarna de COMMIT standaard wordt uitgevoerd.
- Een DCL-query [ bijvoorbeeld, een GRANT statement] wordt uitgevoerd, waarna de COMMIT standaard wordt uitgevoerd.
- De gebruiker beëindigt de databaseverbinding.
- De gebruiker voert de EXIT-instructie uit om uit de SQL * PLUS te komen, waarna COMMIT standaard wordt uitgevoerd.
- SQL * PLUS komt een ongebruikelijke beëindiging tegen, waarna ROLLBACK standaard wordt uitgevoerd.
- Een DML-query wordt niet succesvol uitgevoerd, waarna ROLLBACK standaard wordt uitgevoerd om de database terug te brengen naar de oorspronkelijke staat.
COMMIT voor permanente veranderingen
De COMMIT-verklaring kan de huidige transactie beëindigen en een permanente wijziging aanbrengen zoals uitgevoerd door de transactie. Zodra COMMIT is uitgevoerd, kunnen we de gewijzigde gegevens in handen krijgen.
Terwijl de COMMIT-instructie wordt uitgevoerd, worden alle betrokken rijen van de tabel vrijgegeven van vergrendelingen. Het helpt ons ook om van het SAVEPOINT af te komen. Een COMMIT-instructie kan optioneel vergezeld gaan van een WORK-instructie [COMMIT WORK] die alleen wordt toegevoegd om de leesbaarheid van de code te verbeteren.
Als een transactie mislukt op het moment van COMMIT en de status van de transactie niet bekend is, wordt op dat moment COMMENT-tekst in de PL / SQL-code opgeslagen in een datadictionary samen met het ID van de transactie.
Syntaxis voor transactie COMMIT:
Laten we eens kijken naar een tabel met de naam LERAREN.
We hebben de TEACHERS-tabel gemaakt met behulp van de onderstaande SQL-instructie:
Voeg waarden in deze tabel in en leg de transactie op de volgende manier vast:
Vervolgens wordt de onderstaande vraag uitgevoerd:
Uitgang:
ROLLBACK om wijzigingen ongedaan te maken
Als een huidige transactie wordt beëindigd met een ROLLBACK-instructie, worden alle wijzigingen ongedaan gemaakt die in de transactie zouden moeten plaatsvinden.
beste cpu en gpu temp monitor
Een ROLLBACK-instructie heeft de volgende kenmerken, zoals hieronder vermeld:
- De database wordt in de oorspronkelijke staat hersteld met een ROLLBACK-instructie voor het geval we per ongeluk een belangrijke rij uit de tabel hebben verwijderd.
- In het geval van een uitzondering die heeft geleid tot het mislukken van de uitvoering van een SQL-instructie, stelt een ROLLBACK-instructie ons in staat om naar het startpunt van het programma te springen van waaruit we herstelmaatregelen kunnen nemen.
- De updates die in de database zijn aangebracht zonder een COMMIT-instructie, kunnen worden ingetrokken met een ROLLBACK-instructie.
Syntaxis voor transactie ROLLBACK:
Syntaxis voor transactie ROLLBACK met SAVEPOINT:
Hier de save_n is de naam van het SAVEPOINT.
Laten we eens kijken naar de LERAREN-tabel die we eerder hebben gemaakt.
Code-implementatie met ROLLBACK:
Vervolgens wordt de onderstaande vraag uitgevoerd:
De uitvoer van de bovenstaande code moet zijn:
In de bovenstaande code hebben we een DELETE-instructie uitgevoerd die verondersteld wordt het record van de leraar te verwijderen met CODE gelijk aan 3. Echter, vanwege de ROLLBACK-instructie is er geen impact op de database en wordt de verwijdering niet uitgevoerd.
SAVEPOINT Voor het ongedaan maken van gedeeltelijke wijzigingen
SAVEPOINT geeft naam en identificatie aan het huidige transactieverwerkingspunt. Het wordt doorgaans geassocieerd met een ROLLBACK-instructie. Het stelt ons in staat om sommige delen van een transactie terug te draaien door de hele transactie niet aan te raken.
Als we ROLLBACK toepassen op een SAVEPOINT, worden alle SAVEPOINTS die zijn opgenomen na dat specifieke SAVEPOINT verwijderd [dat wil zeggen als we drie SAVEPOINTS hebben gemarkeerd en een ROLLBACK toepassen op het tweede SAVEPOINT, wordt automatisch het derde SAVEPOINT verwijderd.]
Een COMMIT- of een ROLLBACK-instructie verwijdert alle SAVEPOINTS. De namen die aan SAVEPOINT worden gegeven, zijn niet-gedeclareerde ID's en kunnen binnen een transactie meerdere keren opnieuw worden toegepast. Er is een beweging van SAVEPOINT van de oude naar de huidige positie binnen de transactie.
Een ROLLBACK toegepast op een SAVEPOINT heeft alleen invloed op het lopende deel van de transactie. Zo helpt een SAVEPOINT om een langdurige transactie op te splitsen in kleine secties door validatiepunten te positioneren.
Syntaxis voor transactie SAVEPOINT:
Hier, save_n is de naam van het SAVEPOINT.
Laten we opnieuw kijken naar de LERAREN-tabel die we eerder hebben gemaakt.
Code implementatie van ROLLBACK MET SAVEPOINT:
Vervolgens wordt de onderstaande vraag uitgevoerd:
De uitvoer van de bovenstaande code moet zijn:
In de bovenstaande code, na ROLLBACK met SAVEPOINT s wordt toegepast, zijn er nog maar twee rijen ingevoegd, d.w.z. docenten met respectievelijk CODE 4 en 7. Let op: docenten met code 1, 2 en 3 zijn toegevoegd tijdens het maken van de tafel.
LOCK-tabel in PL / SQL
LOCK-instructie in PL / SQL maakt vergrendeling van de volledige database in een vergrendelingsmodus mogelijk. Dit bepaalt of we de toegang tot de tafel willen delen of weigeren.
Laten we een voorbeeld nemen van een vergrendeltafel:
De bovenstaande query vergrendelt de TEACHERS-tabel in de modus voor het delen van rijen. Een rij-share-modus geeft toestemming voor een gelijktijdig gebruik van een tabel. Gebruikers kunnen niet de volledige tafel vergrendelen voor individueel gebruik. Na het uitvoeren van een COMMIT of ROLLBACK worden de table locks vrijgegeven. Het NOWAIT-sleutelwoord wordt gebruikt om te vermelden dat de database niet mag wachten tot een vergrendeling wordt vrijgegeven.
De lock mode is belangrijk om te concluderen welke andere locks er op een tafel kunnen worden toegepast.
Laten we enkele LOCK-modi bespreken die beschikbaar zijn in PL / SQL:
Sl. Nee | GESLOTEN MODUS | DOEL |
---|---|---|
1 | RIJ AANDEEL | Hiermee kunnen meerdere gebruikers de tafel tegelijkertijd gebruiken. Het is de gebruikers echter niet toegestaan om de volledige tafel te vergrendelen voor exclusief gebruik. |
twee | RIJ EXCLUSIEF | Hiermee kunnen meerdere gebruikers de tafel tegelijkertijd gebruiken. Het is de gebruikers echter niet toegestaan om de volledige tafel te vergrendelen voor exclusief gebruik in de deelmodus. |
3 | DEEL UPDATE | Hiermee kunnen meerdere gebruikers de tafel tegelijkertijd gebruiken. Het is de gebruikers echter niet toegestaan om de volledige tafel te vergrendelen voor exclusief gebruik. |
4 | DELEN | Het stelt ons in staat om meerdere zoekopdrachten tegelijkertijd op de tafel uit te voeren. De gebruikers mogen de vergrendelde tabel echter niet wijzigen. |
5 | DEEL RIJ EXCLUSIEF | Het geeft gebruikers met alleen-lezen toegang tot de tafel. Ze mogen de tafel niet wijzigen of de tafel vergrendelen in de deelmodus. |
6 | EXCLUSIEF | Het staat alleen het uitvoeren van zoekopdrachten op de vergrendelde tafel toe. |
Automatische transactiecontrole in PL / SQL
We kunnen zo configureren dat een COMMIT-instructie standaard wordt uitgevoerd wanneer een INSERT- of DELETE-instructie wordt uitgevoerd. Dit wordt gedaan door de omgevingsvariabele AUTOCOMMIT op ON te zetten.
Syntaxis:
Nogmaals, dit kan worden uitgeschakeld door de omgevingsvariabele AUTOCOMMIT op OFF te zetten.
Syntaxis:
Veelgestelde vragen en antwoorden
V # 1) Wat is de transactie in PL SQL?
Antwoord: Een transactie is een groep SQL-gegevensberekeningsinstructies die werken als een atomaire eenheid. Alle transacties zijn atomair van aard, die ofwel worden gecommitteerd of teruggedraaid.
Vraag 2) Wat is COMMIT in PL SQL?
Antwoord: Een COMMIT-instructie wordt gebruikt om een permanente wijziging in de database aan te brengen door de huidige transactie. Het maakt de wijziging van de database zichtbaar voor gebruikers.
V # 3) Hoe beëindigt u een transactie?
Antwoord: Een transactie wordt expliciet beëindigd met een COMMIT- of ROLLBACK-instructie. Het kan ook onvoorwaardelijk worden beëindigd nadat een DML-instructie is uitgevoerd.
V # 4) Kunnen we vastleggen in een trigger?
Antwoord: Ja, we kunnen alleen in trigger vastleggen als die triggertransactie op zichzelf staat van de bovenliggende transactie.
V # 5) Is SELECT een transactie?
Antwoord: Ja, SELECT is een transactie met alle kenmerken van een transactie.
V # 6) Hoe kan ik een transactie terugdraaien in Oracle?
Antwoord: We moeten een ROLLBACK-instructie uitvoeren om een transactie in Oracle terug te draaien. Alle wijzigingen die door de transactie in de database zijn aangebracht, worden ongedaan gemaakt en worden in de oorspronkelijke staat hersteld.
de standaardgateway is niet beschikbaar windows 8
Gevolgtrekking
In deze tutorial hebben we enkele basisconcepten van PL SQL-transacties in detail besproken die essentieel zijn voor PL SQL-transactiebeheer. We hebben de volgende onderwerpen behandeld:
- Transactie.
- Gebruik van COMMIT in een transactie.
- Wat is een ROLLBACK in een transactie?
- Gebruik van ROLLBACK met SAVEPOINT in een transactie.
- LOCK tafel.
Aanbevolen literatuur
- PL SQL-zelfstudie voor beginners met voorbeelden | Wat is PL / SQL
- Oracle Database Application Development: Oracle SQL en PL / SQL
- PL SQL-pakket: Oracle PL / SQL-pakket zelfstudie met voorbeelden
- Verschil tussen SQL versus MySQL versus SQL Server (met voorbeelden)
- PL SQL Datetime-formaat: datum- en tijdfuncties in PL / SQL
- Volledige gids voor het omgaan met PL SQL-uitzonderingen met voorbeelden
- SQL versus NoSQL Exacte verschillen en weet wanneer u NoSQL en SQL moet gebruiken
- Oracle Database-zelfstudie - Wat is Oracle Database?