pl sql transactions commit
Découvrez les transactions PL SQL avec des exemples d'instructions COMMIT, ROLLBACK et SAVEPOINTS:
Dans cet article, nous continuerons avec Série PL / SQL . dans le Package PL SQL tutoriel, nous avons découvert Package, ses avantages, ses spécifications et sa structure.
Ici, nous allons explorer les transactions PL SQL et leurs caractéristiques. Nous discuterons de certaines instructions PL / SQL comme COMMIT, ROLLBACK, SAVEPOINTS et ainsi de suite qui sont liées aux transactions PL SQL.
Nous découvrirons également les instructions LOCK TABLe et AUTOCOMMIT dans PL SQL.
Commençons par la discussion !!
Ce que vous apprendrez:
- Transactions PL SQL
- Lancer le traitement des transactions
- Terminer le traitement des transactions
- S'ENGAGER pour les changements permanents
- ROLLBACK pour annuler les modifications
- SAVEPOINT pour annuler les modifications partielles
- Table LOCK en PL / SQL
- Contrôle automatique des transactions en PL / SQL
- Foire aux questions et réponses
- Conclusion
Transactions PL SQL
Un composant atomique du travail dans une base de données qui a plusieurs instructions SQL est appelé une transaction. On l'appelle atomique car une fois que des modifications sont affectées par les instructions SQL, elles peuvent être validées (mises à jour indéfinies de la base de données) ou annulées (annuler les mises à jour de la base de données).
Une instruction SQL doit être validée, sinon elle peut être annulée et toutes les modifications que l'instruction SQL était censée effectuer restent annulées. Si le programme PL / SQL est arrêté au milieu de la transaction, il n'y a aucun impact sur la base de données et il est restauré à son état d'origine.
COMMIT et ROLLBACK veillent à ce que les modifications apportées à la base de données soient permanentes ou annulées. L'instruction SAVEPOINT indique la position actuelle dans le traitement des transactions.
la passerelle par défaut n'est pas disponible Windows 10
Lancer le traitement des transactions
Chaque transaction a un début et une fin.
Les incidents suivants marquent le début d'une transaction:
- Après la connexion à la base de données, la première instruction SQL est exécutée.
- Une nouvelle instruction SQL est exécutée une fois l'instruction SQL précédente terminée.
Terminer le traitement des transactions
Chaque programme PL / SQL doit avoir une instruction COMMIT ou ROLLBACK. Cela dépend uniquement de la logique de programmation si nous devons utiliser un COMMIT ou un ROLLBACK après la transaction.
Si les instructions COMMIT ou ROLLBACK ne sont pas utilisées, cela dépend de l'environnement hôte de l'état final de la base de données. Par exemple, dans un environnement SQL * PLUS, si un bloc de code PL / SQL est sans instruction COMMIT ou ROLLBACK, l'état de la base de données dépendra du bloc de code qui est exécuté juste après.
Dans un environnement Oracle, si nous incluons une instruction COMMIT ou exécutons la commande DISCONNECT, EXIT ou QUIT après avoir exécuté une définition de données ou une requête de contrôle des données, la transaction est validée. De plus, si nous incluons une instruction ROLLBACK, la transaction est annulée.
Ainsi, une transaction peut être terminée en raison de l'un des scénarios ci-dessous:
- Une instruction ROLLBACK ou COMMIT est exécutée.
- Une requête DDL ( par exemple, une instruction de création de table) est exécutée, après quoi COMMIT est exécuté par défaut.
- Une requête DCL ( par exemple, une instruction GRANT) est exécutée, après quoi COMMIT est exécuté par défaut.
- L'utilisateur met fin à la connexion à la base de données.
- L'utilisateur exécute l'instruction EXIT pour sortir de SQL * PLUS, après quoi COMMIT est exécuté par défaut.
- SQL * PLUS rencontre une terminaison inhabituelle, à la suite de laquelle ROLLBACK est exécuté par défaut.
- Une requête DML ne s'exécute pas correctement, après quoi ROLLBACK est exécuté par défaut pour ramener la base de données à son état d'origine.
S'ENGAGER pour les changements permanents
L'instruction COMMIT est capable de mettre fin à la présente transaction et d'effectuer une modification permanente telle qu'effectuée par la transaction. Une fois COMMIT exécuté, nous pouvons récupérer les données modifiées.
Lorsque l'instruction COMMIT est exécutée, toutes les lignes affectées de la table sont libérées des verrous. Cela nous aide également à nous débarrasser du SAVEPOINT. Une instruction COMMIT peut éventuellement être accompagnée d'une instruction WORK (COMMIT WORK) qui est ajoutée uniquement pour améliorer la lisibilité du code.
Dans le cas où une transaction échoue au moment de COMMIT et que l'état de la transaction n'est pas connu, à ce moment, le texte COMMENT dans le code PL / SQL est stocké dans un dictionnaire de données avec l'ID de la transaction.
Syntaxe de la transaction COMMIT:
COMMIT;
Considérons une table nommée TEACHERS.
Nous avons créé la table TEACHERS à l'aide de l'instruction SQL ci-dessous:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
Insérez des valeurs dans cette table, puis validez la transaction de la manière suivante:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Ensuite, la requête ci-dessous est exécutée:
SELECT * FROM TEACHERS;
Production:
ROLLBACK pour annuler les modifications
Si une transaction actuelle se termine par une instruction ROLLBACK, elle annulera toutes les modifications censées avoir lieu dans la transaction.
Une instruction ROLLBACK présente les caractéristiques suivantes, comme indiqué ci-dessous:
- La base de données est restaurée avec son état d'origine avec une instruction ROLLBACK au cas où nous aurions supprimé par erreur une ligne importante de la table.
- Dans le cas d'une exception ayant conduit à l'échec d'exécution d'une instruction SQL, une instruction ROLLBACK nous permet de sauter au point de départ du programme à partir duquel nous pouvons prendre des mesures correctives.
- Les mises à jour apportées à la base de données sans instruction COMMIT peuvent être révoquées avec une instruction ROLLBACK.
Syntaxe de la transaction ROLLBACK:
ROLLBACK;
Syntaxe de la transaction ROLLBACK avec SAVEPOINT:
ROLLBACK (TO SAVEPOINT );
Ici le save_n est le nom du SAVEPOINT.
Prenons la table TEACHERS que nous avons créée précédemment.
Implémentation du code avec ROLLBACK:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Ensuite, la requête ci-dessous est exécutée:
SELECT * FROM TEACHERS;
La sortie du code ci-dessus doit être:
tester des questions d'entrevue pour des professionnels expérimentés avec des réponses
Dans le code ci-dessus, nous avons exécuté une instruction DELETE qui est censée supprimer l'enregistrement de l'enseignant avec CODE égal à 3. Cependant, à cause de l'instruction ROLLBACK, il n'y a aucun impact sur la base de données et la suppression n'est pas effectuée.
SAVEPOINT pour annuler les modifications partielles
SAVEPOINT donne le nom et l'identification au point de traitement de transaction actuel. Il est généralement associé à une instruction ROLLBACK. Cela nous permet de revenir sur certaines sections d'une transaction en ne touchant pas à l'ensemble de la transaction.
Lorsque nous appliquons ROLLBACK à un SAVEPOINT, tous les SAVEPOINTS inclus à la suite de ce SAVEPOINT particulier sont supprimés (c'est-à-dire que si nous avons marqué trois SAVEPOINTS et appliqué un ROLLBACK sur le deuxième SAVEPOINT, le troisième SAVEPOINT sera automatiquement supprimé.)
Une instruction COMMIT ou ROLLBACK supprime tous les SAVEPOINTS. Les noms donnés à SAVEPOINT sont des identifiants non déclarés et peuvent être réappliqués plusieurs fois dans une transaction. Il y a un mouvement de SAVEPOINT de l'ancienne à la position actuelle à l'intérieur de la transaction.
Un ROLLBACK appliqué à un SAVEPOINT n'affecte que la partie en cours de la transaction. Ainsi, un SAVEPOINT permet de scinder une longue transaction en petites sections en positionnant des points de validation.
Syntaxe de la transaction SAVEPOINT:
SAVEPOINT ;
Ici, save_n est le nom du SAVEPOINT.
Reprenons la table TEACHERS que nous avons créée précédemment.
Implémentation du code de 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;
Ensuite, la requête ci-dessous est exécutée:
SELECT * FROM TEACHERS;
La sortie du code ci-dessus doit être:
Dans le code ci-dessus, après ROLLBACK avec SAVEPOINT s est appliqué, seules deux lignes supplémentaires ont été insérées, c'est-à-dire des enseignants avec CODE 4 et 7, respectivement. Veuillez noter que les enseignants avec les codes 1, 2 et 3 ont été ajoutés lors de la création de la table.
Table LOCK en PL / SQL
L'instruction LOCK en PL / SQL active le verrouillage de la base de données complète en mode de verrouillage. Cela détermine si nous voulons partager ou interdire l'accès à la table.
Prenons un exemple de table de verrouillage:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
La requête ci-dessus verrouille la table TEACHERS en mode de partage de lignes. Un mode de partage de lignes autorise une utilisation simultanée d'une table. Il ne permet pas aux utilisateurs de verrouiller la table complète pour une utilisation individuelle. Après l'exécution d'un COMMIT ou d'un ROLLBACK, les verrous de table sont libérés. Le mot clé NOWAIT est utilisé pour mentionner que la base de données n'est pas autorisée à attendre qu'un verrou soit libéré.
Le mode de verrouillage est important pour conclure quels autres verrous peuvent être appliqués à une table.
Laissez-nous discuter de certains modes de VERROUILLAGE disponibles en PL / SQL:
Sl. Non | MODE DE VERROUILLAGE | BUT |
---|---|---|
un | PARTAGE DE RANGÉE | Il permet à plusieurs utilisateurs d'utiliser la table simultanément. Cependant, les utilisateurs ne sont pas autorisés à verrouiller la table complète pour une utilisation exclusive. |
deux | EXCLUSIVITÉ ROW | Il permet à plusieurs utilisateurs d'utiliser la table simultanément. Cependant, les utilisateurs ne sont pas autorisés à verrouiller la table complète pour une utilisation exclusive en mode de partage. |
3 | MISE À JOUR DE PARTAGE | Il permet à plusieurs utilisateurs d'utiliser la table simultanément. Cependant, les utilisateurs ne sont pas autorisés à verrouiller la table complète pour une utilisation exclusive. |
4 | PARTAGER | Cela nous permet d'exécuter plusieurs requêtes sur la table simultanément. Cependant, les utilisateurs ne sont pas autorisés à modifier la table verrouillée. |
5 | SHARE ROW EXCLUSIVE | Il permet aux utilisateurs ayant un accès en lecture seule à la table. Ils ne sont pas autorisés à modifier la table ou à verrouiller la table en mode de partage. |
6 | EXCLUSIF | Il permet uniquement d'exécuter des requêtes sur la table verrouillée. |
Contrôle automatique des transactions en PL / SQL
Nous pouvons faire une configuration telle qu'une instruction COMMIT soit exécutée par défaut chaque fois qu'une instruction INSERT ou DELETE est exécutée. Pour ce faire, définissez la variable d'environnement AUTOCOMMIT sur ON.
Syntaxe:
SET AUTOCOMMIT ON;
Là encore, cela peut être désactivé en définissant la variable d'environnement AUTOCOMMIT sur OFF.
Syntaxe:
SET AUTOCOMMIT OFF;
Foire aux questions et réponses
Q # 1) Quelle est la transaction dans PL SQL?
Répondre: Une transaction est un groupe d'instructions de calcul de données SQL qui fonctionnent comme une unité atomique. Toutes les transactions sont de nature atomique, qui sont soit validées, soit roll-back.
Q # 2) Qu'est-ce que COMMIT dans PL SQL?
Répondre: Une instruction COMMIT est utilisée pour apporter une modification permanente à la base de données par la transaction actuelle. Il rend la modification de la base de données visible aux utilisateurs.
Q # 3) Comment terminez-vous une transaction?
Répondre: Une transaction se termine par une instruction COMMIT ou ROLLBACK explicitement. Il peut également être interrompu sans condition après l'exécution d'une instruction DML.
comment ouvrir les fichiers .xml
Q # 4) Pouvons-nous nous engager dans un déclencheur?
Répondre: Oui, nous ne pouvons valider dans le déclencheur que si cette transaction de déclenchement est indépendante de sa transaction parente.
Q # 5) SELECT est-il une transaction?
Répondre: Oui, SELECT est une transaction ayant toutes les caractéristiques d'une transaction.
Q # 6) Comment annuler une transaction dans Oracle?
Répondre: Nous devons exécuter une instruction ROLLBACK pour annuler une transaction dans Oracle. Il annulera toutes les modifications apportées par la transaction à la base de données et sera rétabli dans son état d'origine.
Conclusion
Dans ce didacticiel, nous avons abordé en détail certains concepts de base des transactions PL SQL qui sont essentiels pour la gestion des transactions PL SQL. Nous avons couvert les sujets suivants énumérés ci-dessous:
- Transaction.
- Utilisation de COMMIT dans une transaction.
- Qu'est-ce qu'un ROLLBACK dans une transaction?
- Utilisation de ROLLBACK avec SAVEPOINT dans une transaction.
- Table LOCK.
lecture recommandée
- Tutoriel PL SQL pour les débutants avec des exemples | Qu'est-ce que PL / SQL
- Développement d'applications de base de données Oracle: Oracle SQL et PL / SQL
- Package PL SQL: Tutoriel Oracle PL / SQL Package avec des exemples
- Différence entre SQL et MySQL et SQL Server (avec exemples)
- PL SQL Datetime Format: Fonctions de date et d'heure en PL / SQL
- Guide complet de la gestion des exceptions PL SQL avec des exemples
- Différences exactes entre SQL et NoSQL et savoir quand utiliser NoSQL et SQL
- Tutoriel Oracle Database - Qu'est-ce qu'Oracle Database?