pl sql transactions commit
Μάθετε για τις συναλλαγές PL SQL με παραδείγματα των δηλώσεων COMMIT, ROLLBACK και SAVEPOINTS:
Σε αυτό το άρθρο, θα συνεχίσουμε με Σειρά PL / SQL . Στο Πακέτο SQL PL φροντιστήριο, μάθαμε για το Πακέτο, τα πλεονεκτήματα, τις προδιαγραφές και τη δομή του.
Εδώ θα διερευνήσουμε τις συναλλαγές PL SQL και τα χαρακτηριστικά τους. Θα συζητήσουμε ορισμένες δηλώσεις PL / SQL όπως COMMIT, ROLLBACK, SAVEPOINTS και ούτω καθεξής που σχετίζονται με συναλλαγές PL SQL.
Θα μάθουμε επίσης για τις δηλώσεις LOCK TABLe και AUTOCOMMIT στο PL SQL.
Ας ξεκινήσουμε με τη συζήτηση !!
Τι θα μάθετε:
πώς να προσθέσετε ένα στοιχείο σε έναν πίνακα
Συναλλαγές PL SQL
Ένα ατομικό στοιχείο εργασίας σε μια βάση δεδομένων που έχει πολλές δηλώσεις SQL ονομάζεται συναλλαγή. Αναφέρεται ως ατομικό επειδή, όταν υπάρχουν αλλαγές που επηρεάζονται από τις δηλώσεις SQL, μπορούν είτε να πραγματοποιηθούν (επ 'αόριστον ενημερώσεις στη βάση δεδομένων) είτε να επιστρέψουν (αναίρεση ενημερώσεων στη βάση δεδομένων).
Πρέπει να γίνει δέσμευση μιας δήλωσης SQL, διαφορετικά μπορεί να επιστραφεί και όλες οι τροποποιήσεις που έπρεπε να κάνει η δήλωση SQL, παραμένουν αναιρέσιμες. Εάν το πρόγραμμα PL / SQL σταματήσει κατά τη διάρκεια της συναλλαγής, δεν υπάρχει καμία επίδραση στη βάση δεδομένων και επανέρχεται στην αρχική της κατάσταση.
COMMIT και ROLLBACK φροντίζουν για το γεγονός ότι οι αλλαγές στη βάση δεδομένων είναι είτε αιώνιες είτε αναιρέσιμες. Η δήλωση SAVEPOINT δείχνει την παρούσα θέση στην επεξεργασία συναλλαγών.
Ξεκινήστε την επεξεργασία συναλλαγών
Κάθε συναλλαγή έχει αρχή και τερματισμό.
Τα ακόλουθα περιστατικά σηματοδοτούν μια έναρξη της συναλλαγής:
- Μετά τη σύνδεση με τη βάση δεδομένων, εκτελείται η πρώτη δήλωση SQL.
- Μια νέα δήλωση SQL εκτελείται μετά την ολοκλήρωση της προηγούμενης δήλωσης SQL.
Τερματισμός επεξεργασίας συναλλαγών
Κάθε πρόγραμμα PL / SQL θα πρέπει να έχει μια δήλωση COMMIT ή ROLLBACK. Εξαρτάται αποκλειστικά από τη λογική προγραμματισμού εάν θα πρέπει να χρησιμοποιήσουμε μια ΕΠΙΤΡΟΠΗ ή ένα ΕΠΑΝΑΛΗΨΗ μετά τη συναλλαγή.
Εάν οι δηλώσεις COMMIT ή ROLLBACK δεν χρησιμοποιούνται, εξαρτάται από το περιβάλλον του κεντρικού υπολογιστή πώς θα πρέπει να είναι η τελική κατάσταση της βάσης δεδομένων. Για παράδειγμα, σε περιβάλλον SQL * PLUS, εάν ένα μπλοκ κώδικα PL / SQL δεν έχει δήλωση COMMIT ή ROLLBACK, η κατάσταση της βάσης δεδομένων θα εξαρτηθεί από το μπλοκ κώδικα που εκτελείται αμέσως μετά.
Σε ένα περιβάλλον της Oracle, εάν συμπεριλάβουμε μια δήλωση COMMIT ή εκτελέσουμε την εντολή DISCONNECT, EXIT ή QUIT μετά την εκτέλεση ενός ερωτήματος ορισμού δεδομένων ή ελέγχου δεδομένων, η συναλλαγή πραγματοποιείται. Επίσης, εάν συμπεριλάβουμε μια δήλωση ROLLBACK, η συναλλαγή ακυρώνεται.
Έτσι, μια συναλλαγή μπορεί να τερματιστεί λόγω οποιωνδήποτε παρακάτω σεναρίων:
- Εκτελείται μια δήλωση ROLLBACK ή COMMIT.
- Ένα ερώτημα DDL ( για παράδειγμα, εκτελείται μια δήλωση δημιουργίας πίνακα), μετά την οποία η ΕΠΙΤΡΟΠΗ εκτελείται από προεπιλογή.
- Ένα ερώτημα DCL ( για παράδειγμα, εκτελείται μια δήλωση GRANT), μετά την οποία η ΕΠΙΤΡΟΠΗ εκτελείται από προεπιλογή.
- Ο χρήστης τερματίζει τη σύνδεση βάσης δεδομένων.
- Ο χρήστης εκτελεί τη δήλωση EXIT για να βγει από το SQL * PLUS, μετά την οποία το COMMIT εκτελείται από προεπιλογή.
- Το SQL * PLUS αντιμετωπίζει έναν ασυνήθιστο τερματισμό, μετά τον οποίο το ROLLBACK εκτελείται από προεπιλογή.
- Ένα ερώτημα DML δεν εκτελείται με επιτυχία, μετά το οποίο εκτελείται από προεπιλογή το ROLLBACK για να επαναφέρει τη βάση δεδομένων στην αρχική της κατάσταση.
ΕΠΙΤΡΟΠΗ για μόνιμες αλλαγές
Η δήλωση COMMIT είναι ικανή να τερματίσει την παρούσα συναλλαγή και να κάνει μια μόνιμη τροποποίηση όπως εκτελείται από τη συναλλαγή. Μόλις εκτελεστεί το COMMIT, μπορούμε να κρατήσουμε τα τροποποιημένα δεδομένα.
Καθώς εκτελείται η δήλωση COMMIT, όλες οι σειρές του πίνακα που επηρεάζονται απελευθερώνονται από κλειδαριές. Μας βοηθά επίσης να απαλλαγούμε από το SAVEPOINT. Μια δήλωση COMMIT μπορεί προαιρετικά να συνοδεύεται από δήλωση WORK (COMMIT WORK) η οποία προστίθεται μόνο για τη βελτίωση της αναγνωσιμότητας του κώδικα.
Σε περίπτωση που μια συναλλαγή αποτύχει κατά τη στιγμή της ΕΠΙΧΕΙΡΗΣΗΣ και η κατάσταση της συναλλαγής δεν είναι γνωστή, τότε το κείμενο ΠΑΡΑΤΗΡΗΣΕΩΝ στον κώδικα PL / SQL αποθηκεύεται σε ένα λεξικό δεδομένων μαζί με το αναγνωριστικό της συναλλαγής.
Σύνταξη για συναλλαγή ΕΠΙΤΡΟΠΗ:
COMMIT;
Ας σκεφτούμε έναν πίνακα με το όνομα ΔΙΔΑΣΚΑΛΙΕΣ.
Δημιουργήσαμε τον πίνακα TEACHERS με τη βοήθεια της δήλωσης SQL που δίνεται παρακάτω:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
Εισαγάγετε τιμές σε αυτόν τον πίνακα και, στη συνέχεια, πραγματοποιήστε τη συναλλαγή με τον ακόλουθο τρόπο:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Στη συνέχεια, εκτελείται το παρακάτω ερώτημα:
SELECT * FROM TEACHERS;
Παραγωγή:
ΑΝΑΛΥΣΗ ΑΛΛΑΓΩΝ
Εάν μια παρούσα συναλλαγή τερματιστεί με μια δήλωση ROLLBACK, τότε θα αναιρέσει όλες τις τροποποιήσεις που υποτίθεται ότι θα πραγματοποιηθούν στη συναλλαγή.
Μια δήλωση ROLLBACK έχει τις ακόλουθες δυνατότητες όπως αναφέρονται παρακάτω:
- Η βάση δεδομένων αποκαθίσταται με την αρχική της κατάσταση με μια δήλωση ROLLBACK σε περίπτωση που έχουμε διαγράψει κατά λάθος μια σημαντική σειρά από τον πίνακα.
- Σε περίπτωση εξαίρεσης που έχει οδηγήσει σε αποτυχία εκτέλεσης μιας δήλωσης SQL, μια δήλωση ROLLBACK μας επιτρέπει να μεταβούμε στο σημείο εκκίνησης του προγράμματος από το οποίο μπορούμε να λάβουμε διορθωτικά μέτρα.
- Οι ενημερώσεις που γίνονται στη βάση δεδομένων χωρίς δήλωση COMMIT μπορούν να ανακληθούν με μια δήλωση ROLLBACK.
Σύνταξη για συναλλαγή ROLLBACK:
ROLLBACK;
Σύνταξη για συναλλαγή ROLLBACK με SAVEPOINT:
ROLLBACK (TO SAVEPOINT );
Εδώ, το αποθήκευση_n είναι το όνομα του SAVEPOINT.
Ας εξετάσουμε τον πίνακα Διδάσκοντες που έχουμε δημιουργήσει νωρίτερα.
Εφαρμογή κώδικα με ROLLBACK:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Στη συνέχεια, εκτελείται το παρακάτω ερώτημα:
SELECT * FROM TEACHERS;
Η έξοδος του παραπάνω κώδικα πρέπει να είναι:
Στον παραπάνω κώδικα, έχουμε εκτελέσει μια δήλωση ΔΙΑΓΡΑΦΗ που υποτίθεται ότι θα διαγράψει την εγγραφή του καθηγητή με CODE ίσο με 3. Ωστόσο, λόγω της δήλωσης ROLLBACK, δεν υπάρχει αντίκτυπος στη βάση δεδομένων και δεν γίνεται διαγραφή.
SAVEPOINT για την επαναφορά μερικών αλλαγών
Το SAVEPOINT δίνει όνομα και ταυτοποίηση στο παρόν σημείο επεξεργασίας συναλλαγών. Συνήθως σχετίζεται με μια δήλωση ROLLBACK. Μας δίνει τη δυνατότητα να επαναφέρουμε ορισμένες ενότητες μιας συναλλαγής χωρίς να αγγίξουμε ολόκληρη τη συναλλαγή.
Καθώς εφαρμόζουμε το ROLLBACK σε ένα SAVEPOINT, όλα τα SAVEPOINT που περιλαμβάνονται μετά το συγκεκριμένο SAVEPOINT καταργούνται (δηλαδή αν έχουμε σημειώσει τρία SAVEPOINTS και εφαρμόσαμε ένα ROLLBACK στο δεύτερο SAVEPOINT, αυτόματα το τρίτο SAVEPOINT θα διαγραφεί.)
Μια δήλωση COMMIT ή ROLLBACK διαγράφει όλα τα SAVEPOINTS. Τα ονόματα που δίνονται στο SAVEPOINT είναι αδήλωτα αναγνωριστικά και μπορούν να εφαρμοστούν ξανά πολλές φορές μέσα σε μια συναλλαγή. Υπάρχει μια κίνηση του SAVEPOINT από την παλιά στην παρούσα θέση μέσα στη συναλλαγή.
Ένα ΕΠΑΝΑΛΗΨΗ που εφαρμόζεται σε ένα SAVEPOINT επηρεάζει μόνο το τρέχον μέρος της συναλλαγής. Έτσι, ένα SAVEPOINT βοηθά στη διάσπαση μιας μακράς συναλλαγής σε μικρές ενότητες τοποθετώντας σημεία επικύρωσης.
Σύνταξη για συναλλαγή SAVEPOINT:
SAVEPOINT ;
Εδώ, αποθήκευση_n είναι το όνομα του SAVEPOINT.
Ας εξετάσουμε και πάλι τον πίνακα TEACHERS που έχουμε δημιουργήσει νωρίτερα.
Εφαρμογή κώδικα του 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;
Στη συνέχεια, εκτελείται το παρακάτω ερώτημα:
SELECT * FROM TEACHERS;
Η έξοδος του παραπάνω κώδικα πρέπει να είναι:
Στον παραπάνω κώδικα, μετά το ROLLBACK με SAVEPOINT μικρό εφαρμόζεται, εισήχθησαν μόνο δύο ακόμη σειρές, δηλαδή εκπαιδευτικοί με τους κωδικούς CODE 4 και 7, αντίστοιχα. Λάβετε υπόψη ότι οι καθηγητές με τους κωδικούς 1, 2 και 3 έχουν προστεθεί κατά τη δημιουργία του πίνακα.
LOCK Πίνακας σε PL / SQL
Η δήλωση LOCK σε PL / SQL επιτρέπει το κλείδωμα της πλήρους βάσης δεδομένων σε λειτουργία κλειδώματος. Αυτό καθορίζει εάν θέλουμε να μοιραστούμε ή να απαγορεύσουμε την πρόσβαση στον πίνακα.
Ας πάρουμε ένα παράδειγμα πίνακα κλειδώματος:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Το παραπάνω ερώτημα κλειδώνει τον πίνακα TEACHERS σε λειτουργία κοινής χρήσης σειράς. Η λειτουργία κοινής χρήσης σειράς δίνει άδεια για ταυτόχρονη χρήση σε έναν πίνακα. Δεν επιτρέπει στους χρήστες να κλειδώσουν τον πλήρη πίνακα για ατομική χρήση. Μετά την εκτέλεση ενός COMMIT ή ROLLBACK, οι κλειδαριές τραπεζιού απελευθερώνονται. Η λέξη-κλειδί NOWAIT χρησιμοποιείται για να αναφέρει ότι η βάση δεδομένων δεν επιτρέπεται να περιμένει την απελευθέρωση μιας κλειδαριάς.
τοποθεσία αρχείου apk σε τηλέφωνο Android
Η λειτουργία κλειδώματος είναι σημαντική για να συμπεράνουμε τι άλλες κλειδαριές μπορούν να εφαρμοστούν σε έναν πίνακα.
Ας συζητήσουμε μερικές λειτουργίες LOCK διαθέσιμες σε PL / SQL:
Σλ. Οχι | ΛΕΙΤΟΥΡΓΙΑ ΚΛΕΙΔΩΜΑΤΟΣ | ΣΚΟΠΟΣ |
---|---|---|
1 | ΚΑΤΑΝΟΜΗ ΣΕΙΡΑ | Επιτρέπει σε πολλούς χρήστες να χρησιμοποιούν τον πίνακα ταυτόχρονα. Ωστόσο, δεν επιτρέπεται στους χρήστες να κλειδώνουν τον πλήρη πίνακα για αποκλειστική χρήση. |
δύο | ΑΠΟΚΛΕΙΣΤΙΚΗ ΣΕΙΡΑ | Επιτρέπει σε πολλούς χρήστες να χρησιμοποιούν τον πίνακα ταυτόχρονα. Ωστόσο, δεν επιτρέπεται στους χρήστες να κλειδώνουν τον πλήρη πίνακα για αποκλειστική χρήση σε λειτουργία κοινής χρήσης. |
3 | ΕΝΗΜΕΡΩΣΗ ΜΕΤΟΧΗΣ | Επιτρέπει σε πολλούς χρήστες να χρησιμοποιούν τον πίνακα ταυτόχρονα. Ωστόσο, δεν επιτρέπεται στους χρήστες να κλειδώνουν τον πλήρη πίνακα για αποκλειστική χρήση. |
4 | ΜΕΡΙΔΙΟ | Μας επιτρέπει να εκτελούμε ταυτόχρονα πολλαπλά ερωτήματα στο τραπέζι. Ωστόσο, δεν επιτρέπεται στους χρήστες να τροποποιήσουν τον κλειδωμένο πίνακα. |
5 | ΑΠΟΚΛΕΙΣΤΙΚΗ ΜΟΝΑΔΙΚΗ ΣΕΙΡΑ | Επιτρέπει στους χρήστες με πρόσβαση μόνο για ανάγνωση στον πίνακα. Δεν επιτρέπεται να τροποποιήσουν τον πίνακα ή να κλειδώσουν τον πίνακα σε λειτουργία κοινής χρήσης. |
6 | ΑΠΟΚΛΕΙΣΤΙΚΟΣ | Επιτρέπει μόνο την εκτέλεση ερωτημάτων στον κλειδωμένο πίνακα. |
Αυτόματος έλεγχος συναλλαγών σε PL / SQL
Μπορούμε να κάνουμε διαμόρφωση έτσι ώστε μια δήλωση COMMIT να εκτελείται από προεπιλογή κάθε φορά που εκτελείται μια δήλωση INSERT ή DELETE. Αυτό γίνεται κάνοντας τη μεταβλητή περιβάλλοντος AUTOCOMMIT σε ON.
Σύνταξη:
SET AUTOCOMMIT ON;
Και πάλι, αυτό μπορεί να απενεργοποιηθεί κάνοντας τη μεταβλητή περιβάλλοντος AUTOCOMMIT σε OFF.
Σύνταξη:
SET AUTOCOMMIT OFF;
Συχνές Ερωτήσεις και Απαντήσεις
Q # 1) Ποια είναι η συναλλαγή στο PL SQL;
Απάντηση: Μια συναλλαγή είναι μια ομάδα δηλώσεων υπολογισμού δεδομένων SQL που λειτουργούν ως ατομική μονάδα. Όλες οι συναλλαγές είναι ατομικής φύσης, οι οποίες είτε έχουν δεσμευτεί είτε υποστηρίζονται από το ρολό.
Q # 2) Τι είναι το COMMIT στο PL SQL;
Απάντηση: Μια δήλωση COMMIT χρησιμοποιείται για τη μόνιμη αλλαγή στη βάση δεδομένων από την παρούσα συναλλαγή. Κάνει την τροποποίηση στη βάση δεδομένων ορατή στους χρήστες.
Q # 3) Πώς τερματίζετε μια συναλλαγή;
Απάντηση: Μια συναλλαγή τερματίζεται με μια δήλωση COMMIT ή ROLLBACK ρητά. Μπορεί επίσης να τερματιστεί άνευ όρων μετά την εκτέλεση μιας δήλωσης DML.
Q # 4) Μπορούμε να δεσμευτούμε σε έναυσμα;
Απάντηση: Ναι, μπορούμε να δεσμευτούμε στο trigger μόνο εάν αυτή η συναλλαγή ενεργοποίησης είναι αυτόνομη από τη μητρική της συναλλαγή.
Q # 5) ΕΠΙΛΟΓΗ συναλλαγής;
Απάντηση: Ναι, SELECT είναι μια συναλλαγή που έχει όλα τα χαρακτηριστικά μιας συναλλαγής.
Q # 6) Πώς μπορώ να επαναφέρω μια συναλλαγή στο Oracle;
Απάντηση: Πρέπει να εκτελέσουμε μια δήλωση ROLLBACK για την επαναφορά μιας συναλλαγής στο Oracle. Αναιρεί όλες τις αλλαγές που έγιναν από τη συναλλαγή στη βάση δεδομένων και επανέρχεται στην αρχική της κατάσταση.
συμπέρασμα
Σε αυτό το σεμινάριο, έχουμε συζητήσει λεπτομερώς ορισμένες βασικές έννοιες των συναλλαγών PL SQL που είναι απαραίτητες για τη διαχείριση συναλλαγών PL SQL. Έχουμε καλύψει τα ακόλουθα θέματα που αναφέρονται παρακάτω:
- Συναλλαγή.
- Χρήση του COMMIT σε μια συναλλαγή.
- Τι είναι το ROLLBACK σε μια συναλλαγή;
- Χρήση του ROLLBACK με SAVEPOINT σε μια συναλλαγή.
- ΤΡΑΠΕΖΙ LOCK.
Συνιστώμενη ανάγνωση
- Εκμάθηση PL SQL για αρχάριους με παραδείγματα | Τι είναι το PL / SQL
- Ανάπτυξη εφαρμογών βάσης δεδομένων Oracle: Oracle SQL & PL / SQL
- Πακέτο PL SQL: Οδηγός πακέτου Oracle PL / SQL με παραδείγματα
- Διαφορά μεταξύ SQL Vs MySQL Vs SQL Server (με παραδείγματα)
- Μορφή χρόνου SQL PL: Λειτουργίες ημερομηνίας και ώρας στο PL / SQL
- Πλήρης οδηγός για την εξαίρεση PL SQL με παραδείγματα
- SQL vs NoSQL Ακριβείς διαφορές και ξέρετε πότε να χρησιμοποιήσετε το NoSQL και SQL
- Εκμάθηση βάσης δεδομένων Oracle - Τι είναι η βάση δεδομένων Oracle;