SQLite Έναρξη, Προβολές & Ευρετήριο με Παράδειγμα
Στην καθημερινή χρήση του SQLite, θα χρειαστείτε κάποια εργαλεία διαχείρισης στη βάση δεδομένων σας. Μπορείτε επίσης να τα χρησιμοποιήσετε για να κάνετε την αναζήτηση στη βάση δεδομένων πιο αποτελεσματικά δημιουργώντας ευρετήρια ή πιο επαναχρησιμοποιήσιμα δημιουργώντας προβολές.
SQLite Προβολή
Οι προβολές μοιάζουν πολύ με τους πίνακες. Αλλά οι προβολές είναι λογικοί πίνακες. δεν αποθηκεύονται φυσικά όπως οι πίνακες. Μια προβολή αποτελείται από μια πρόταση επιλογής.
Μπορείτε να ορίσετε μια προβολή για τα πολύπλοκα ερωτήματά σας και μπορείτε να τα χρησιμοποιήσετε ξανά όποτε θέλετε καλώντας απευθείας την προβολή αντί να ξαναγράψετε ξανά τα ερωτήματα.
ΔΗΜΙΟΥΡΓΙΑ ΔΗΛΩΣΗΣ ΠΡΟΒΟΛΗ
Για να δημιουργήσετε μια προβολή σε μια βάση δεδομένων, μπορείτε να χρησιμοποιήσετε τη δήλωση CREATE VIEW ακολουθούμενη από το όνομα της προβολής και, στη συνέχεια, να βάλετε το ερώτημα που θέλετε μετά από αυτό.
Παράδειγμα: Στο παρακάτω παράδειγμα θα δημιουργήσουμε μια προβολή με το όνομα "AllStudentsView"στο δείγμα βάσης δεδομένων"TutorialsSampleDB.db” ως εξής:
Βήμα 1) Ανοίξτε τον Υπολογιστή μου και μεταβείτε στον ακόλουθο κατάλογο "C:\sqlite"και μετά ανοίξτε"sqlite3.exe"
Βήμα 2) Ανοίξτε τη βάση δεδομένων "TutorialsSampleDB.db” με την ακόλουθη εντολή:
Βήμα 3) Ακολουθεί μια βασική σύνταξη της εντολής sqlite3 για τη δημιουργία της Προβολής
CREATE VIEW AllStudentsView AS SELECT s.StudentId, s.StudentName, s.DateOfBirth, d.DepartmentName FROM Students AS s INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;
Δεν πρέπει να υπάρχει έξοδος από την εντολή όπως αυτή:
Βήμα 4) Για να βεβαιωθείτε ότι έχει δημιουργηθεί η προβολή, μπορείτε να επιλέξετε τη λίστα προβολών στη βάση δεδομένων εκτελώντας την ακόλουθη εντολή:
SELECT name FROM sqlite_master WHERE type = 'view';
Θα πρέπει να δείτε τη θέα"AllStudentsView” επιστρέφεται:
Βήμα 5) Τώρα η άποψή μας δημιουργήθηκε, μπορείτε να τη χρησιμοποιήσετε ως κανονικό πίνακα κάπως έτσι:
SELECT * FROM AllStudentsView;
Αυτή η εντολή θα ρωτήσει την προβολή "AllStudents" και θα επιλέξει όλες τις σειρές από αυτήν όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:
Προσωρινές Προβολές
Οι προσωρινές προβολές είναι προσωρινές για την τρέχουσα σύνδεση βάσης δεδομένων που χρησιμοποιείται για τη δημιουργία της. Στη συνέχεια, εάν κλείσετε τη σύνδεση της βάσης δεδομένων, όλες οι προσωρινές προβολές θα διαγραφούν αυτόματα. Οι προσωρινές προβολές δημιουργούνται χρησιμοποιώντας μία από τις ακόλουθες εντολές:
- ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ή
- ΔΗΜΙΟΥΡΓΗΣΤΕ ΠΡΟΣΩΡΙΝΗ ΠΡΟΒΟΛΗ.
Οι προσωρινές προβολές είναι χρήσιμες εάν θέλετε να κάνετε κάποιες λειτουργίες προς το παρόν και δεν χρειάζεται να είναι μόνιμη προβολή. Έτσι, δημιουργείτε απλώς μια προσωρινή προβολή και, στη συνέχεια, πραγματοποιείτε την επεξεργασία χρησιμοποιώντας αυτήν την προβολή. Later όταν κλείσετε τη σύνδεση με τη βάση δεδομένων, θα διαγραφεί αυτόματα.
Παράδειγμα:
Στο παρακάτω παράδειγμα, θα ανοίξουμε μια σύνδεση βάσης δεδομένων και, στη συνέχεια, θα δημιουργήσουμε μια προσωρινή προβολή.
Μετά από αυτό, θα κλείσουμε αυτήν τη σύνδεση και θα ελέγξουμε αν η προσωρινή προβολή εξακολουθεί να υπάρχει ή όχι.
Βήμα 1) Ανοίξτε το sqlite3.exe από τον κατάλογο "C:\sqlite» όπως εξηγήθηκε προηγουμένως.
Βήμα 2) Ανοίξτε μια σύνδεση με τη βάση δεδομένων "TutorialsSampleDB.db" εκτελώντας την ακόλουθη εντολή:
.open TutorialsSampleDB.db
Βήμα 3) Γράψτε την ακόλουθη εντολή που θα δημιουργήσει μια προβολή temp "AllStudentsTempView»
CREATE TEMP VIEW AllStudentsTempView AS SELECT s.StudentId, s.StudentName, s.DateOfBirth, d.DepartmentName FROM Students AS s INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;
Βήμα 4) Βεβαιωθείτε ότι η προβολή θερμοκρασίας "AllStudentsTempView" δημιουργείται εκτελώντας την ακόλουθη εντολή:
SELECT name FROM sqlite_temp_master WHERE type = 'view';
Βήμα 5) Κλείστε το sqlite3.exe και ανοίξτε το ξανά.
Βήμα 6) Ανοίξτε μια σύνδεση με τη βάση δεδομένων "TutorialsSampleDB.db” με την ακόλουθη εντολή:
.open TutorialsSampleDB.db
Βήμα 7) Εκτελέστε την ακόλουθη εντολή για να λάβετε τη λίστα της προσωρινής προβολής που δημιουργήθηκε στη βάση δεδομένων:
SELECT name FROM sqlite_temp_master WHERE type = 'view';
Δεν θα πρέπει να βλέπετε καμία έξοδο, καθώς η προβολή temp που δημιουργήσαμε διαγράφεται όταν κλείσαμε τη σύνδεση της βάσης δεδομένων στο προηγούμενο βήμα. Διαφορετικά, όσο διατηρείτε τη σύνδεση με τη βάση δεδομένων ανοιχτή, θα μπορείτε να δείτε την προσωρινή προβολή με δεδομένα.
:
- Δεν μπορείτε να χρησιμοποιήσετε τις δηλώσεις ΕΙΣΑΓΩΓΗ, ΔΙΑΓΡΑΦΗ ή ΕΝΗΜΕΡΩΣΗ με προβολές, μόνο μπορείτε να χρησιμοποιήσετε την εντολή "επιλογή από προβολές" όπως φαίνεται στο βήμα 5 στο παράδειγμα ΔΗΜΙΟΥΡΓΙΑ προβολής.
- Για να διαγράψετε μια ΠΡΟΒΟΛΗ, μπορείτε να χρησιμοποιήσετε τη δήλωση "DROP VIEW":
DROP VIEW AllStudentsView;
Για να βεβαιωθείτε ότι η προβολή έχει διαγραφεί, μπορείτε να εκτελέσετε την ακόλουθη εντολή που σας δίνει τη λίστα των προβολών στη βάση δεδομένων:
SELECT name FROM sqlite_master WHERE type = 'view';
Δεν θα βρείτε προβολές που επιστράφηκαν καθώς η προβολή διαγράφηκε, ως εξής:
SQLite Περιεχόμενα
Εάν έχετε ένα βιβλίο και θέλετε να αναζητήσετε μια λέξη-κλειδί σε αυτό το βιβλίο. Θα αναζητήσετε αυτή τη λέξη-κλειδί στο ευρετήριο του βιβλίου. Στη συνέχεια, θα πλοηγηθείτε στον αριθμό σελίδας για τη συγκεκριμένη λέξη-κλειδί για να διαβάσετε περισσότερες πληροφορίες σχετικά με αυτήν τη λέξη-κλειδί.
Ωστόσο, εάν δεν υπάρχει ευρετήριο σε αυτό το βιβλίο ούτε αριθμοί σελίδων, θα σαρώσετε ολόκληρο το βιβλίο από την αρχή μέχρι το τέλος μέχρι να βρείτε τη λέξη-κλειδί που αναζητάτε. Και αυτό είναι πολύ δύσκολο, ειδικά όταν έχετε ευρετήριο και πολύ αργή διαδικασία για να αναζητήσετε μια λέξη-κλειδί.
Ευρετήρια σε SQLite (και η ίδια έννοια ισχύει και για άλλους συστήματα διαχείρισης βάσεων δεδομένων επίσης) λειτουργεί με τον ίδιο τρόπο όπως τα ευρετήρια που βρίσκονται στο πίσω μέρος των βιβλίων.
Όταν κάνετε αναζήτηση για ορισμένες σειρές σε ένα SQLite πίνακας με κριτήρια αναζήτησης, SQLite θα πραγματοποιήσει αναζήτηση σε όλες τις σειρές του πίνακα μέχρι να βρει τις σειρές που αναζητάτε που ταιριάζουν με τα κριτήρια αναζήτησης. Και αυτή η διαδικασία γίνεται πολύ αργή όταν έχετε μεγαλύτερα τραπέζια.
Τα ευρετήρια θα επιταχύνουν τα ερωτήματα αναζήτησης δεδομένων και θα βοηθήσουν στην ανάκτηση δεδομένων από πίνακες. Τα ευρετήρια ορίζονται στις στήλες του πίνακα.
Βελτίωση απόδοσης με δείκτες:
Τα ευρετήρια μπορούν να βελτιώσουν την απόδοση της αναζήτησης δεδομένων σε έναν πίνακα. Όταν δημιουργείτε ένα ευρετήριο σε μια στήλη, SQLite θα δημιουργήσει μια δομή δεδομένων για αυτό το ευρετήριο όπου κάθε τιμή πεδίου έχει έναν δείκτη σε ολόκληρη τη σειρά όπου ανήκει η τιμή.
Στη συνέχεια, εάν εκτελέσετε ένα ερώτημα με μια συνθήκη αναζήτησης σε μια στήλη που αποτελεί μέρος ενός ευρετηρίου, SQLite θα αναζητήσει πρώτα την τιμή στο ευρετήριο. SQLite δεν θα σαρώσει ολόκληρο τον πίνακα για αυτό. Στη συνέχεια, θα διαβάσει τη θέση όπου δείχνει η τιμή για τη σειρά του πίνακα. SQLite θα εντοπίσει τη σειρά σε αυτήν την τοποθεσία και θα την ανακτήσει.
Ωστόσο, εάν η στήλη που αναζητάτε δεν αποτελεί μέρος ενός ευρετηρίου, SQLite θα πραγματοποιήσει σάρωση για τις τιμές στηλών για να βρει τα δεδομένα που αναζητάτε. Θα είναι συνήθως μια πιο αργή διαδικασία εάν δεν υπάρχει δείκτης.
Φανταστείτε ένα βιβλίο χωρίς ευρετήριο και πρέπει να αναζητήσετε μια συγκεκριμένη λέξη. Θα σαρώσετε ολόκληρο το βιβλίο από την πρώτη σελίδα μέχρι την τελευταία σελίδα αναζητώντας αυτή τη λέξη. Ωστόσο, εάν έχετε ευρετήριο σε αυτό το βιβλίο, θα αναζητήσετε πρώτα τη λέξη σε αυτό. Λάβετε τον αριθμό σελίδας όπου βρίσκεται και, στη συνέχεια, μεταβείτε σε αυτόν. Κάτι που θα είναι πολύ πιο γρήγορο από το να σαρώσετε ολόκληρο το βιβλίο από εξώφυλλο σε εξώφυλλο.
SQLite ΔΗΜΙΟΥΡΓΙΑ ΔΕΙΚΤΗΣ
Για να δημιουργήσετε ένα ευρετήριο σε μια στήλη, θα πρέπει να χρησιμοποιήσετε την εντολή CREATE INDEX. Και θα πρέπει να το ορίσετε ως εξής:
- Πρέπει να καθορίσετε το όνομα του ευρετηρίου μετά την εντολή CREATE INDEX.
- Μετά το όνομα του ευρετηρίου, πρέπει να βάλετε τη λέξη-κλειδί «ON», ακολουθούμενη από το όνομα του πίνακα στον οποίο θα δημιουργηθεί το ευρετήριο.
- Στη συνέχεια, η λίστα με τα ονόματα στηλών που χρησιμοποιούνται για το ευρετήριο.
- Μπορείτε να χρησιμοποιήσετε μία από τις ακόλουθες λέξεις-κλειδιά "ASC" ή "DESC" μετά από οποιοδήποτε όνομα στήλης για να καθορίσετε μια σειρά ταξινόμησης που χρησιμοποιείται για την παραγγελία των δεδομένων ευρετηρίου.
Παράδειγμα:
Στο παρακάτω παράδειγμα, θα δημιουργήσουμε ένα ευρετήριο «StudentNameIndex" στο τραπέζι των μαθητών στο "Φοιτητές” βάση δεδομένων ως εξής:
Βήμα 1) Πλοηγηθείτε στο φάκελο "C:\sqlite» όπως εξηγήθηκε προηγουμένως.
Βήμα 2) Ανοίξτε το sqlite3.exe.
Βήμα 3) Ανοίξτε τη βάση δεδομένων "TutorialsSampleDB.db” με την ακόλουθη εντολή:
.open TutorialsSampleDB.db
Βήμα 4) Δημιουργία νέου ευρετηρίου "StudentNameIndex” χρησιμοποιώντας την ακόλουθη εντολή:
CREATE INDEX StudentNameIndex ON Students(StudentName);
Δεν πρέπει να δείτε έξοδο για αυτό:
Βήμα 5) Για να βεβαιωθείτε ότι το ευρετήριο δημιουργήθηκε, μπορείτε να εκτελέσετε το ακόλουθο ερώτημα, το οποίο σας δίνει τη λίστα των ευρετηρίων που δημιουργήθηκαν στον πίνακα Students:
PRAGMA index_list(Students);
Θα πρέπει να δείτε το ευρετήριο που μόλις δημιουργήσαμε να επιστρέφεται:
:
- Τα ευρετήρια μπορούν να δημιουργηθούν όχι μόνο με βάση στήλες αλλά και εκφράσεις. Κάτι σαν αυτό:
CREATE INDEX OrderTotalIndex ON OrderItems(OrderId, Quantity*Price);
Το "OrderTotalIdex" θα βασίζεται στη στήλη OrderId και επίσης στον πολλαπλασιασμό της τιμής της στήλης Quantity και της τιμής της στήλης Price. Επομένως, οποιοδήποτε ερώτημα για "OrderId" και "Quantity*Price" θα είναι αποτελεσματικό καθώς το ερώτημα θα χρησιμοποιεί το ευρετήριο.
- Εάν καθορίσατε μια ρήτρα WHERE στη δήλωση CREATE INDEX, το ευρετήριο θα είναι ένα μερικό ευρετήριο. Σε αυτήν την περίπτωση, θα υπάρχουν καταχωρήσεις στο ευρετήριο μόνο για τις σειρές που ταιριάζουν με τις συνθήκες της ρήτρας WHERE. Για παράδειγμα, στο παρακάτω ευρετήριο:
CREATE INDEX OrderTotalIndexForLargeQuantities ON OrderItems(OrderId, Quantity*Price) WHERE Quantity > 10000;
( Στο παραπάνω παράδειγμα, ο δείκτης θα είναι ένας μερικός δείκτης, καθώς υπάρχει μια ρήτρα WHERE. Σε αυτήν την περίπτωση, ο δείκτης θα εφαρμοστεί μόνο σε εκείνες τις παραγγελίες που έχουν αξία ποσότητας μεγαλύτερη από 10000. Σημειώστε ότι αυτός ο δείκτης ονομάζεται μερικός ευρετήριο λόγω της ρήτρας WHERE, όχι της έκφρασης που χρησιμοποιείται σε αυτήν. Ωστόσο, μπορείτε να χρησιμοποιήσετε τις εκφράσεις με κανονικά ευρετήρια.)
- Μπορείτε να χρησιμοποιήσετε τη δήλωση CREATE UNIQUE INDEX αντί για CREATE INDEX για να αποτρέψετε διπλές εγγραφές για τις στήλες και έτσι όλες οι τιμές για τη στήλη με ευρετήριο θα είναι μοναδικές.
- Για να διαγράψετε ένα ευρετήριο, χρησιμοποιήστε την εντολή DROP INDEX ακολουθούμενη από το όνομα του ευρετηρίου για διαγραφή.
SQLite Σκανδάλη
Εισαγωγή στην SQLite Σκανδάλη
Οι ενεργοποιητές είναι αυτόματες προκαθορισμένες λειτουργίες που εκτελούνται όταν μια συγκεκριμένη ενέργεια εμφανίζεται σε έναν πίνακα βάσης δεδομένων. Μπορεί να οριστεί ένας κανόνας που θα ενεργοποιείται κάθε φορά που συμβαίνει μία από τις ακόλουθες ενέργειες σε έναν πίνακα:
- ΕΙΣΑΓΩΓΗ σε πίνακα.
- ΔΙΑΓΡΑΦΗ σειρών από έναν πίνακα.
- ΕΝΗΜΕΡΩΣΗ μιας από τις στήλες του πίνακα.
SQLite υποστηρίζει την ενεργοποίηση ΓΙΑ ΚΑΘΕ ΣΕΙΡΑ, έτσι ώστε οι προκαθορισμένες λειτουργίες στον κανόνα ετικέτας να εκτελούνται για όλες τις σειρές που εμπλέκονται στις ενέργειες που πραγματοποιήθηκαν στον πίνακα (είτε πρόκειται για εισαγωγή, διαγραφή ή ενημέρωση).
SQLite ΔΗΜΙΟΥΡΓΙΑ ΣΚΑΝΔΙΣΤΗΣ
Για να δημιουργήσετε ένα νέο TRIGGER, μπορείτε να χρησιμοποιήσετε τη δήλωση CREATE TRIGGER ως εξής:
- Μετά το CREATE TRIGGER, θα πρέπει να καθορίσετε ένα όνομα ενεργοποίησης.
- Μετά το όνομα της ενεργοποίησης, πρέπει να καθορίσετε πότε ακριβώς θα πρέπει να εκτελεστεί το όνομα ενεργοποίησης. Έχετε τρεις επιλογές:
- ΠΡΙΝ – η ενεργοποίηση θα εκτελεστεί πριν από την καθορισμένη δήλωση INSERT, UPDATE ή delete.
- Μετά – η ενεργοποίηση θα εκτελεστεί μετά την καθορισμένη δήλωση INSERT, UPDATE ή delete.
- ΑΝΤΙ - Θα αντικαταστήσει την ενέργεια που συνέβη και η οποία πυροδότησε τη σκανδάλη με τη δήλωση που καθορίζεται στο TRIGGER. Η σκανδάλη ΑΝΤΙ ΓΙΑ δεν εφαρμόζεται με πίνακες, μόνο με προβολές.
Οι σκανδαλισμοί θα ενεργοποιούνται (ενεργοποιούνται) μόνο ανάλογα με τον τύπο της δήλωσης που καθορίζεται στην εντολή δημιουργίας ενεργοποίησης. Για παράδειγμα:
- Η σκανδάλη ΠΡΙΝ ΕΙΣΑΓΩΓΗ θα ενεργοποιηθεί (ενεργοποιηθεί) πριν από οποιαδήποτε δήλωση εισαγωγής.
- Η ενεργοποίηση AFTER UPDATE θα ενεργοποιηθεί (ενεργοποιηθεί) μετά από οποιαδήποτε δήλωση ενημέρωσης, … και ούτω καθεξής.
Μέσα στο έναυσμα, μπορείτε να ανατρέξετε στις τιμές που εισήχθησαν πρόσφατα χρησιμοποιώντας τη λέξη-κλειδί "νέα". Επίσης, μπορείτε να ανατρέξετε στις διαγραμμένες ή ενημερωμένες τιμές χρησιμοποιώντας την παλιά λέξη-κλειδί. Ως εξής:
- Εντός κανόνων INSERT – μπορεί να χρησιμοποιηθεί νέα λέξη-κλειδί.
- Εντός κανόνων UPDATE – μπορούν να χρησιμοποιηθούν νέες και παλιές λέξεις-κλειδιά.
- Εντός κανόνων DELETE - μπορεί να χρησιμοποιηθεί παλιά λέξη-κλειδί.
Παράδειγμα
Στη συνέχεια, θα δημιουργήσουμε μια σκανδάλη που θα ενεργοποιηθεί πριν εισαγάγετε έναν νέο μαθητή στο "ΦοιτητέςΤραπέζι.
Θα καταγράψει τον μαθητή που εισήχθη πρόσφατα στον πίνακα "Καταγραφή μαθητών” με αυτόματη σήμανση ώρας για την τρέχουσα ημερομηνία ώρας κατά την οποία συνέβη η δήλωση εισαγωγής. Ως εξής:
Βήμα 1) Πλοηγηθείτε στον κατάλογο "C:\sqlite” και εκτελέστε το sqlite3.exe.
Βήμα 2) Ανοίξτε τη βάση δεδομένων "TutorialsSampleDB.db" εκτελώντας την ακόλουθη εντολή:
.open TutorialsSampleDB.db
Βήμα 3) δημιουργήστε τη σκανδάλη "InsertIntoStudentTrigger” Εκτελώντας την ακόλουθη εντολή:
CREATE TRIGGER InsertIntoStudentTrigger BEFORE INSERT ON Students BEGIN INSERT INTO StudentsLog VALUES(new.StudentId, datetime(), 'Insert'); END;
η λειτουργία "ημερομηνία ώρα()" θα σας δώσει την τρέχουσα ημερομηνία σφραγίδα ώρας όταν συνέβη η δήλωση εισαγωγής. Για να μπορούμε να καταγράφουμε τη συναλλαγή εισαγωγής με αυτόματες χρονικές σημάνσεις που προστίθενται σε κάθε συναλλαγή.
Η εντολή πρέπει να εκτελεστεί με επιτυχία και δεν λαμβάνετε έξοδο:
Η σκανδάλη "InsertIntoStudentTrigger" θα ενεργοποιείται κάθε φορά που εισάγετε έναν νέο μαθητή στον πίνακα μαθητών. Ο "νέοςΗ λέξη-κλειδί αναφέρεται στις τιμές που θα εισαχθούν. Για παράδειγμα, το «νέο.Φοιτητικό Ταυτ” θα είναι το φοιτητικό id που θα εισαχθεί.
Τώρα, θα δοκιμάσουμε πώς συμπεριφέρεται η σκανδάλη όταν εισάγουμε έναν νέο μαθητή.
Βήμα 4) Γράψτε την ακόλουθη εντολή που θα εισάγει έναν νέο μαθητή στον πίνακα μαθητών:
INSERT INTO Students VALUES(11, 'guru11', 1, '1999-10-12');
Βήμα 5) Γράψτε την παρακάτω εντολή που θα επιλέξει όλες τις σειρές από το "Καταγραφή μαθητών” πίνακας:
SELECT * FROM StudentsLog;
Θα πρέπει να δείτε μια νέα σειρά που επιστρέφεται για τον νέο μαθητή που μόλις εισαγάγαμε:
Αυτή η σειρά εισήχθη από το έναυσμα πριν από την εισαγωγή του νέου μαθητή με αναγνωριστικό 11.
Σε αυτό το παράδειγμα χρησιμοποιήσαμε τη σκανδάλη " InsertIntoStudentTrigger " δημιουργήσαμε, για να καταγράψουμε τυχόν συναλλαγές εισαγωγής στον πίνακα "Καταγραφή μαθητών” αυτόματα. Με τον ίδιο τρόπο μπορείτε να καταγράψετε οποιαδήποτε ενημέρωση ή να διαγράψετε δηλώσεις.
Αποτροπή ακούσιων ενημερώσεων με ενεργοποιητές:
Χρησιμοποιώντας τους κανόνες ετικέτας ΠΡΙΝ ΕΝΗΜΕΡΩΣΗ σε έναν πίνακα, μπορείτε να αποτρέψετε τις δηλώσεις ενημέρωσης σε μια στήλη που βασίζονται σε μια έκφραση.
Παράδειγμα
Στο παρακάτω παράδειγμα, θα αποτρέψουμε οποιαδήποτε δήλωση ενημέρωσης από την ενημέρωση της στήλης "όνομα μαθητή" στον πίνακα Students:
Βήμα 1) Πλοηγηθείτε στον κατάλογο "C:\sqlite” και εκτελέστε το sqlite3.exe.
Βήμα 2) Ανοίξτε τη βάση δεδομένων "TutorialsSampleDB.db" εκτελώντας την ακόλουθη εντολή:
.open TutorialsSampleDB.db
Βήμα 3) Δημιουργήστε ένα νέο έναυσμα "preventUpdateStudentName" πάνω στο τραπέζι "Φοιτητές" εκτελώντας την παρακάτω εντολή
CREATE TRIGGER preventUpdateStudentName BEFORE UPDATE OF StudentName ON Students FOR EACH ROW BEGIN SELECT RAISE(ABORT, 'You cannot update studentname'); END;
Ο "ΥΨΩΝΩΗ εντολή "θα εμφανίσει ένα σφάλμα με ένα μήνυμα σφάλματος" Δεν μπορείτε να ενημερώσετε το όνομα μαθητή ", και στη συνέχεια θα αποτρέψει την εκτέλεση της δήλωσης ενημέρωσης.
Τώρα, θα επαληθεύσουμε ότι ο κανόνας ετικέτας λειτουργεί καλά και αποτρέπει οποιαδήποτε ενημέρωση για τη στήλη ονόματος μαθητή.
Βήμα 4) Εκτελέστε την ακόλουθη εντολή ενημέρωσης, η οποία θα ενημερώσει το όνομα του μαθητή "γρύλος" να είναι "Jack1".
UPDATE Students SET StudentName = 'Jack1' WHERE StudentName = 'Jack';
Θα πρέπει να λάβετε το μήνυμα σφάλματος που καθορίσαμε στη σκανδάλη, λέγοντας ότι "Δεν μπορείτε να ενημερώσετε το όνομα μαθητή” ως εξής:
Βήμα 5) Εκτελέστε την ακόλουθη εντολή, η οποία θα επιλέξει τη λίστα με τα ονόματα των μαθητών από τον πίνακα μαθητών.
SELECT StudentName FROM Students;
Θα πρέπει να δείτε ότι το όνομα του μαθητή "Jack" εξακολουθεί να είναι το ίδιο και δεν αλλάζει:
Περίληψη
Οι προβολές, τα ευρετήρια και οι κανόνες ετικέτας είναι πολύ ισχυρά εργαλεία για τη διαχείριση ενός SQLite βάσεις δεδομένων. Μπορείτε να παρακολουθείτε τις λειτουργίες τροποποίησης δεδομένων όταν συμβαίνουν σε έναν πίνακα. Μπορείτε επίσης να βελτιστοποιήσετε τη λειτουργία ανάκτησης δεδομένων βάσης δεδομένων δημιουργώντας ευρετήρια.