Οι ρήτρες τροποποίησης δεδομένων στο SQLite είναι INSERT, UPDATE και DELETE δηλώσεις. Χρησιμοποιείται για την εισαγωγή νέων γραμμών, την ενημέρωση υπαρχουσών τιμών ή τη διαγραφή σειρών από τη βάση δεδομένων.
Σε αυτό το σεμινάριο, θα μάθετε-
- ΕΙΣΑΓΕΤΕ
- Εκσυγχρονίζω
- Διαγράφω
- Ρήτρα σύγκρουσης
Σημειώστε ότι, για όλα τα ακόλουθα παραδείγματα, πρέπει να εκτελέσετε το sqlite3.exe και να ανοίξετε μια σύνδεση με το δείγμα βάσης δεδομένων ως ροή:
Βήμα 1) Σε αυτό το βήμα,
- Ανοίξτε τον υπολογιστή μου και μεταβείτε στον ακόλουθο κατάλογο " C: \ sqlite " και
- Στη συνέχεια, ανοίξτε το " sqlite3.exe ":
Βήμα 2) Ανοίξτε τη βάση δεδομένων " TutorialsSampleDB.db " με την ακόλουθη εντολή:
. ανοίξτε TutorialsSampleDB.db
Τώρα είστε έτοιμοι να εκτελέσετε οποιοδήποτε είδος ερωτήματος στη βάση δεδομένων.
ΕΙΣΑΓΩΓΗ SQLite
Το SQLite INSERT χρησιμοποιείται για την εισαγωγή εγγραφών σε έναν καθορισμένο πίνακα της βάσης δεδομένων. πρέπει να χρησιμοποιήσετε τη ρήτρα «ΕΙΣΑΓΩΓΗ». Η σύνταξη της ρήτρας INSERT έχει ως εξής:
- Μετά τη ρήτρα INSERT, θα πρέπει να δηλώσετε σε ποιον πίνακα πρέπει να εισαγάγετε τις τιμές.
- Μετά το όνομα του πίνακα που γράφετε τη λίστα των στηλών, θέλετε να εισαγάγετε τις τιμές.
- Μπορείτε να αγνοήσετε το όνομα των στηλών και να μην τους γράψετε.
- Εάν δεν γράψετε το όνομα των στηλών, οι τιμές θα εισαχθούν σε όλες τις στήλες που βρίσκονται στον πίνακα με την ίδια σειρά, οι στήλες καθορίζονται στον πίνακα.
- Μετά τον όρο VALUES, πρέπει να αναφέρετε τις τιμές που θα εισαχθούν.
- Κάθε ρήτρα INSERT εισάγει μόνο μία σειρά. Εάν θέλετε να εισαγάγετε πολλές σειρές, θα πρέπει να γράψετε πολλές ρήτρες ΕΙΣΑΓΩΓΗΣ, μία για κάθε σειρά.
Παράδειγμα εισαγωγής SQLite
Στο παρακάτω παράδειγμα, θα εισαγάγουμε 2 σειρές στον πίνακα μαθητών, μία για κάθε μαθητή:
INSERT INTO Students (StudentId, StudentName, DepartmentId, DateOfBirth)ΑΞΙΕΣ (11, "Ahmad", 4, "1997-10-12");ΕΙΣΑΓΩΓΗ ΣΕ Φοιτητές ΑΞΙΕΣ (12, "Aly", 4, "1996-10-12")
Αυτό πρέπει να εκτελεστεί με επιτυχία και δεν υπάρχει έξοδος για αυτό:
Αυτό θα εισαγάγει δύο μαθητές:
- Ο πρώτος μαθητής με StudentId = 11, StudentName = Ahmad, DepartmentId = 4 και DateOfBirth = 1997-10-12.
- Ο δεύτερος μαθητής με StudentId = 12, StudentName = Aly, DepartmentId = 4 και DateOfBirth = 1996-10-12 '.
Στην πρώτη δήλωση, παραθέσαμε τις στήλες ονόματα " StudentId, StudentName, DepartmentId, DateOfBirth ". Ωστόσο, στη δεύτερη δήλωση, δεν το κάναμε.
Οι τέσσερις τιμές " 12," Aly ", 4," 1996-10-12 " " θα εισαχθούν και στις τέσσερις στήλες του πίνακα μαθητών με την ίδια σειρά που ορίζονται οι στήλες.
Τώρα, ας επαληθεύσουμε ότι οι δύο μαθητές εισήχθησαν στον πίνακα μαθητών εκτελώντας το ακόλουθο ερώτημα:
ΕΠΙΛΕΞΤΕ * ΑΠΟ Φοιτητές.
Τότε θα πρέπει να δείτε ότι οι δύο μαθητές επέστρεψαν από αυτό το ερώτημα ως εξής:
Ενημέρωση SQLite
Το ερώτημα SQLite UPDATE χρησιμοποιείται για την τροποποίηση των υπαρχουσών εγγραφών σε έναν πίνακα. Μπορείτε να χρησιμοποιήσετε τον όρο WHERE με το ερώτημα ΕΝΗΜΕΡΩΣΗ για να ενημερώσετε επιλεγμένες σειρές. Ο όρος ΕΝΗΜΕΡΩΣΗ ενημερώνει έναν πίνακα αλλάζοντας μια τιμή για μια συγκεκριμένη στήλη. Το παρακάτω είναι η σύνταξη της ρήτρας ΕΝΗΜΕΡΩΣΗΣ:
Ως εξής:
- Μετά την "ρήτρα ενημέρωσης", θα πρέπει να γράψετε το όνομα του πίνακα για ενημέρωση.
- Πρέπει να γράψετε "SET clause" που χρησιμοποιείται για να γράψετε το όνομα της στήλης για ενημέρωση και την τιμή που πρέπει να ενημερωθεί.
- Μπορείτε να ενημερώσετε περισσότερες από μία στήλες. Μπορείτε να χρησιμοποιήσετε κόμμα μεταξύ κάθε γραμμής.
- Μπορείτε να καθορίσετε μια ρήτρα ΠΟΥ ΠΕΡΙΕΧΕΙ για να καθορίσετε μόνο ορισμένες σειρές. Ενημερώνονται μόνο οι σειρές που αξιολογεί η έκφραση ως αληθής. Εάν δεν καθορίσατε μια ρήτρα ΠΟΥ, όλες οι σειρές θα ενημερωθούν.
Παράδειγμα ενημέρωσης SQLite
Στην ακόλουθη δήλωση ενημέρωσης, θα ενημερώσουμε το DepartmentId για το Student with StudentId = 6 σε 3:
ΕΝΗΜΕΡΩΣΗ ΦοιτητώνSET DepartmentId = 3WHERE StudentId = 6;
Αυτό θα πρέπει να εκτελεστεί με επιτυχία και δεν πρέπει να έχετε έξοδο:
Στην ενότητα ΕΝΗΜΕΡΩΣΗ, ορίσαμε ότι θέλουμε να ενημερώσουμε τον πίνακα Φοιτητές.
- Στη ρήτρα WHERE, φιλτράραμε όλους τους μαθητές για να επιλέξουμε μόνο τη σειρά για το StudentId = 6.
- Ο όρος SET θα ενημερώσει την τιμή του αναγνωριστικού τμήματος για τους επιλεγμένους μαθητές να είναι 3.
Τώρα, ας επαληθεύσουμε ότι ο μαθητής με αναγνωριστικό 6 είναι ενημερωμένος, εκτελώντας την ακόλουθη εντολή:
ΕΠΙΛΕΞΤΕ * ΑΠΟ ΦΟΙΤΗΤΕΣ WHERE StudentId = 6
Θα πρέπει τώρα να δείτε ότι η τιμή Αναγνωριστικού τμήματος είναι τώρα 3 ως εξής:
Διαγραφή SQLite
Το ερώτημα SQLite DELETE χρησιμοποιείται για την αφαίρεση υπαρχουσών εγγραφών από έναν καθορισμένο πίνακα. Μπορείτε να χρησιμοποιήσετε τον όρο WHERE με DELETE ερωτήματα για να διαγράψετε τις επιλεγμένες σειρές.
Ο όρος DELETE έχει την ακόλουθη σύνταξη:
- Πρέπει να γράψετε ένα όνομα πίνακα μετά τον όρο DELETE FROM, από τον οποίο θέλετε να διαγράψετε εγγραφές. ( Σημείωση: ότι ο όρος ΔΙΑΓΡΑΦΗ χρησιμοποιείται για τη διαγραφή ορισμένων εγγραφών από έναν πίνακα ή τη διαγραφή όλων των εγγραφών και δεν θα διαγράψει τον ίδιο τον πίνακα. Ωστόσο, η ρήτρα DROP χρησιμοποιείται για τη διαγραφή ολόκληρου του πίνακα με όλες τις εγγραφές σε αυτόν. )
- Εάν γράψετε τον όρο ΔΙΑΓΡΑΦΗ όπως αυτό "ΔΙΑΓΡΑΦΗ ΑΠΟ Γκουρού", αυτό θα διαγράψει όλες τις εγγραφές από τον πίνακα "γκουρού"
- Μπορείτε να καθορίσετε μια συνθήκη WHERE με μια παράσταση εάν θέλετε να διαγράψετε ορισμένες συγκεκριμένες σειρές. Θα διαγραφούν μόνο οι γραμμές για τις οποίες η έκφραση αξιολογείται ως αληθής. Για παράδειγμα, "ΔΙΑΓΡΑΦΗ ΑΠΟ ΓΟΥΡΟΥ WHERE id> 5" - αυτό θα διαγράψει μόνο τις εγγραφές που έχουν αναγνωριστικό μεγαλύτερο από 5.
Παράδειγμα
Στην ακόλουθη δήλωση, θα διαγράψουμε δύο μαθητές με το StudentId 11 και 12:
ΔΙΑΓΡΑΦΗ ΑΠΟ ΦΟΙΤΗΤΕΣ WHERE StudentId = 11 Ή StudentId = 12;
Η έκφραση " StudentId = 11 OR StudentId = 12 " θα ισχύει μόνο για μαθητές με Id 11 και 12. Επομένως, η ρήτρα ΔΙΑΓΡΑΦΗΣ θα εφαρμοστεί και στα δύο και θα τις διαγράψει μόνο.
Αυτή η εντολή θα πρέπει να εκτελεστεί με επιτυχία και δεν θα πρέπει να έχετε έξοδο ως εξής:
Μπορείτε να επαληθεύσετε ότι οι δύο μαθητές διαγράφηκαν, επιλέγοντας όλες τις εγγραφές από τον πίνακα μαθητών ως εξής:
ΕΠΙΛΕΞΤΕ * ΑΠΟ Φοιτητές.
Δεν πρέπει να βλέπετε τους δύο μαθητές με τα αναγνωριστικά 11 και 12 ως εξής:
Ρήτρα σύγκρουσης SQLite
Ας υποθέσουμε ότι έχετε μια στήλη που έχει έναν από τους ακόλουθους περιορισμούς στηλών: ΜΟΝΑΔΙΚΟ, ΟΧΙ NULL, CHECK ή PRIMARY KEY. Και μετά προσπαθήσατε να εισαγάγετε ή να ενημερώσετε μια τιμή σε αυτήν τη στήλη με μια τιμή που έρχεται σε διένεξη με αυτόν τον περιορισμό.
Για παράδειγμα, εάν μια στήλη έχει ΜΟΝΑΔΙΚΟ περιορισμό και προσπαθήσατε να εισαγάγετε μια τιμή που υπάρχει ήδη (μια διπλή τιμή), η οποία έρχεται σε διένεξη με τον ΜΟΝΑΔΙΚΟ περιορισμό. Στη συνέχεια, η ρήτρα CONFLICT σάς επιτρέπει να επιλέξετε τι να κάνετε σε τέτοιες περιπτώσεις για να επιλύσετε αυτήν τη διένεξη.
Πριν συνεχίσουμε να εξηγούμε πώς η ρήτρα CONFLICT επιλύει τη διένεξη. Πρέπει να καταλάβετε τι είναι μια συναλλαγή βάσης δεδομένων.
Συναλλαγή βάσης δεδομένων:
Ο όρος συναλλαγή βάσης δεδομένων είναι μια λίστα λειτουργιών SQLite (εισαγωγή ή ενημέρωση ή διαγραφή). Η συναλλαγή βάσης δεδομένων πρέπει να εκτελεστεί ως μία μονάδα, είτε όλες οι λειτουργίες εκτελέστηκαν με επιτυχία είτε όχι καθόλου. Όλες οι λειτουργίες θα ακυρωθούν εάν μία από αυτές απέτυχε να εκτελέσει.
Παράδειγμα συναλλαγής βάσης δεδομένων:
Η συναλλαγή για τη μεταφορά χρημάτων από έναν τραπεζικό λογαριασμό σε άλλο θα περιλαμβάνει μερικές δραστηριότητες. Αυτή η συναλλαγή περιλαμβάνει την ανάληψη χρημάτων από τον πρώτο λογαριασμό και την κατάθεσή του σε άλλο λογαριασμό. Αυτή η συναλλαγή πρέπει να ολοκληρωθεί πλήρως ή να ακυρωθεί πλήρως και να μην αποτύχει στη μέση.
Εδώ είναι η λίστα των πέντε αναλύσεων που μπορείτε να επιλέξετε στην ενότητα CONFLICT:
- ROLLBACK - αυτό θα επαναφέρει τη συναλλαγή στην οποία η τρέχουσα δήλωση SQLite που έχει τη διένεξη (θα ακυρώσει ολόκληρη τη συναλλαγή). Για παράδειγμα, εάν προσπαθείτε να ενημερώσετε 10 σειρές και η πέμπτη σειρά έχει μια τιμή που έρχεται σε διένεξη με έναν περιορισμό, τότε δεν θα ενημερωθούν σειρές, οι 10 σειρές θα παραμείνουν ίδιες. Θα παρουσιαστεί σφάλμα.
- ABORT - αυτό θα ακυρώσει (ακυρώσει) την τρέχουσα δήλωση SQLite μόνο που έχει τη διένεξη και η συναλλαγή δεν θα ακυρωθεί. Για παράδειγμα, εάν προσπαθείτε να ενημερώσετε 10 σειρές και η πέμπτη σειρά έχει μια τιμή που έρχεται σε διένεξη με έναν περιορισμό, τότε μόνο η πέμπτη τιμή δεν θα ενημερωθεί, αλλά οι άλλες 9 σειρές θα ενημερωθούν. Θα παρουσιαστεί σφάλμα.
- FAIL - ακυρώνει την τρέχουσα δήλωση SQLite που έχει τη διένεξη. Ωστόσο, η συναλλαγή δεν θα συνεχιστεί, αλλά οι προηγούμενες αλλαγές που έγιναν σε σειρές πριν από τη σειρά που έχει τη διένεξη θα πραγματοποιηθούν. Για παράδειγμα, εάν προσπαθείτε να ενημερώσετε 10 σειρές και η πέμπτη σειρά έχει μια τιμή που έρχεται σε διένεξη με έναν περιορισμό, τότε μόνο οι 4 σειρές θα ενημερωθούν και οι άλλες δεν θα. Θα παρουσιαστεί σφάλμα.
- IGNORE - αυτό θα παραλείψει τη σειρά που περιέχει την παραβίαση περιορισμού και θα συνεχίσει να επεξεργάζεται τις άλλες ακόλουθες σειρές της δήλωσης SQLite. Για παράδειγμα, εάν προσπαθείτε να ενημερώσετε 10 σειρές και η πέμπτη σειρά έχει μια τιμή που έρχεται σε διένεξη με έναν περιορισμό, τότε μόνο οι 4 σειρές θα ενημερωθούν και οι άλλες δεν θα. Δεν θα προχωρήσει περαιτέρω για να ενημερώσει άλλες σειρές και να σταματήσει στη σειρά που έχει την τιμή διένεξης. Δεν θα υπάρξει σφάλμα.
- ΑΝΤΙΚΑΤΑΣΤΑΣΗ - εξαρτάται από τον τύπο του περιορισμού που έχει την παραβίαση:
- Όταν υπάρχει παραβίαση περιορισμού για τον περιορισμό ΜΟΝΑΔΙΚΟ ή ΠΡΩΤΟΒΟΥΛΙΟ ΚΛΕΙΔΙ. Η ΑΝΤΙΚΑΤΑΣΤΑΣΗ θα αντικαταστήσει τη σειρά που προκαλεί την παραβίαση με τη νέα γραμμή που έχει εισαχθεί ή ενημερωθεί.
- Όταν υπάρχει παραβίαση περιορισμού NOT NULL, η ρήτρα REPLACE θα αντικαταστήσει την τιμή NULL με την προεπιλεγμένη τιμή αυτής της στήλης. Εάν η στήλη δεν έχει προεπιλεγμένη τιμή, τότε το SQLite θα ακυρώσει τη δήλωση (η δήλωση θα ακυρωθεί)
- Εάν συμβεί παραβίαση περιορισμού ελέγχου, η ρήτρα θα ακυρωθεί.
Σημείωση: Οι παραπάνω 5 αναλύσεις είναι επιλογές για το πώς θέλετε να επιλύσετε τη διένεξη. Μπορεί να μην είναι απαραιτήτως αυτό που ισχύει για την επίλυση μιας διένεξης ισχύει για την επίλυση άλλων τύπων διενέξεων.
Πώς να δηλώσετε τη ρήτρα CONFLICT
Μπορείτε να δηλώσετε τον όρο ON CONFLICT όταν ορίζετε έναν περιορισμό για έναν ορισμό στήλης μέσα στον όρο CREATE TABLE. Χρησιμοποιώντας την ακόλουθη σύνταξη:
Μπορείτε να επιλέξετε μία από τις πέντε λύσεις για να επιλύσετε τη διένεξη όπως εξηγήθηκε προηγουμένως.
ON CONFLICT IGNORE Παράδειγμα
Βήμα 1) Δημιουργήστε ένα νέο θέμα πίνακα ως εξής:
ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ [Θέματα] ([SubjectId] INTEGER ΔΕΝ ΕΙΝΑΙ ΚΛΕΙΔΙ ΠΡΩΤΟΒΟΥΛΙΟΥ ΓΙΑ ΣΥΓΚΟΙΝΩΝΙΑ[SubjectName] NVARCHAR ΟΧΙ NULL);
Σημειώστε ότι έχουμε ορίσει έναν περιορισμό ΠΡΩΤΟΒΟΥΛΙΟΥ ΚΛΕΙΔΙ στη στήλη SubjectId. Ο περιορισμός πρωτεύοντος κλειδιού δεν θα επιτρέψει την εισαγωγή δύο διπλότυπων τιμών στη στήλη SubjectId, ώστε όλες οι τιμές σε αυτήν τη στήλη να είναι μοναδικές. Επίσης, παρατηρήστε ότι επιλέγουμε την επίλυση των συγκρούσεων ως " IGNORE ".
Η εντολή πρέπει να εκτελεστεί με επιτυχία και δεν πρέπει να λάβετε σφάλματα:
Βήμα 2) Τώρα, ας εισαγάγουμε μερικές τιμές στα νέα θέματα του πίνακα, αλλά με μια τιμή που παραβιάζει τον περιορισμό του πρωτεύοντος κλειδιού:
ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΤΙΜΕΣ (1, «Άλγεβρα»)ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΑΞΙΩΝ (2, «Μάθημα βάσης δεδομένων»)ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΤΙΜΩΝ (2, «Δομές δεδομένων»)ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΤΙΜΕΣ (4, «Αλγόριθμοι»).
Σε αυτήν τη δήλωση INSERT, προσπαθήσαμε να εισαγάγουμε δύο μαθήματα με το ίδιο πρωτεύον θέμα κλειδιού id 2, το οποίο αποτελεί παραβίαση για τον κύριο περιορισμό κλειδιού.
Οι εντολές θα πρέπει να τρέχουν καλά και δεν θα πρέπει να λάβετε σφάλματα. Ως εξής:
Βήμα 3) Επιλέξτε όλα τα θέματα από τον πίνακα ως εξής:
ΕΠΙΛΕΞΤΕ * ΑΠΟ Θέματα.
Αυτό θα σας δώσει τη λίστα θεμάτων:
Παρατηρήστε ότι μόνο τρία θέματα εισήχθησαν " Άλγεβρα, Βάση δεδομένων και Αλγόριθμοι " αντί για 4 σειρές.
Η σειρά που έχει την τιμή που παραβιάζει τον περιορισμό του πρωτεύοντος κλειδιού, που είναι "Δομές δεδομένων" αγνοήθηκε και δεν εισήχθη. Ωστόσο, το SQLite συνεχίζει να εκτελεί άλλες δηλώσεις μετά από αυτήν τη σειρά.
Βήμα 4) ΔΙΑΓΡΑΦΗ των θεμάτων του πίνακα για να το δημιουργήσετε ξανά με διαφορετική ρήτρα ON CONFLICT για το ακόλουθο παράδειγμα εκτελώντας την ακόλουθη εντολή:
DROP TABLE Θέματα;
Η εντολή drop διαγράφει ολόκληρο τον πίνακα. Τα θέματα πίνακα δεν υπάρχουν πλέον.
ON CONFLICT REPLACE Παράδειγμα
Βήμα 1) Δημιουργήστε ένα νέο θέμα πίνακα ως εξής:
ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ [Θέματα] ([SubjectId] INTEGER ΔΕΝ ΕΙΝΑΙ ΠΛΗΡΟΦΟΡΙΚΟ ΚΛΕΙΔΙ ΣΤΗΝ ΑΝΤΑΛΛΑΚΤΙΚΗ ΣΥΝΔΕΣΗ,[SubjectName] NVARCHAR ΟΧΙ NULL);
Παρατηρήστε ότι ορίσαμε έναν περιορισμό ΠΡΩΤΟΒΟΥΛΙΟΥ ΚΛΕΙΔΙ στη στήλη SubjectId. Ο περιορισμός πρωτεύοντος κλειδιού δεν θα επιτρέψει την εισαγωγή δύο διπλότυπων τιμών στη στήλη SubjectId, έτσι ώστε όλες οι τιμές σε αυτήν τη στήλη να είναι μοναδικές.
Επίσης, σημειώστε ότι επιλέγουμε μια επιλογή επίλυσης συγκρούσεων για να " ΑΝΤΙΚΑΤΑΣΤΑΣΗ " Η εντολή πρέπει να εκτελεστεί με επιτυχία και δεν πρέπει να λάβετε σφάλματα:
Βήμα 2) Τώρα, ας εισαγάγουμε μερικές τιμές στο νέο πίνακα Θέματα, αλλά με μια τιμή που παραβιάζει τον περιορισμό του πρωτεύοντος κλειδιού:
ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΤΙΜΕΣ (1, «Άλγεβρα»)ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΑΞΙΩΝ (2, «Μάθημα βάσης δεδομένων»)ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΤΙΜΩΝ (2, «Δομές δεδομένων»)ΕΙΣΑΓΩΓΗ ΣΕ Θέματα ΤΙΜΕΣ (4, «Αλγόριθμοι»).
Σε αυτήν τη δήλωση INSERT, προσπαθήσαμε να εισαγάγουμε δύο μαθήματα με το ίδιο πρωτεύον θέμα κλειδιού id 2, το οποίο αποτελεί παραβίαση για τον κύριο περιορισμό κλειδιού.
Οι εντολές θα πρέπει να τρέχουν καλά και δεν θα πρέπει να λάβετε σφάλματα. Ως εξής:
Βήμα 3) Επιλέξτε όλα τα θέματα από τον πίνακα ως εξής:
ΕΠΙΛΕΞΤΕ * ΑΠΟ Θέματα.
Αυτό θα σας δώσει τη λίστα θεμάτων:
Παρατηρήστε ότι μόνο τρία θέματα εισήχθησαν " Άλγεβρα, Δομές δεδομένων και Αλγόριθμοι ", ενώ προσπαθήσαμε να εισαγάγουμε 4 σειρές.
Η σειρά που έχει την τιμή που παραβιάζει τον περιορισμό του πρωτεύοντος κλειδιού, που είναι " Δομές δεδομένων " αντικατέστησε την τιμή " Μάθημα βάσης δεδομένων " ως εξής:
- Οι δύο πρώτες δηλώσεις εισαγωγής λειτουργούν καλά χωρίς κανένα πρόβλημα. Δύο μαθήματα Άλγεβρα και Μαθήματα βάσης δεδομένων θα εισαχθούν με αναγνωριστικά 1, 2.
- Όταν το SQLite προσπαθεί να εκτελέσει την τρίτη δήλωση εισαγωγής με το SubjectId 2 και το SubjectName " Data Structures ", ανακαλύπτει ότι υπάρχει ήδη ένα θέμα με το SubjectId = 2. Που αποτελεί παραβίαση για τον περιορισμό του πρωτεύοντος κλειδιού που ορίζεται στη στήλη SubjectId
- Το SQLite θα επιλέξει μια λύση ΑΝΤΙΚΑΤΑΣΤΑΣΗΣ για αυτήν τη διένεξη. Αντικαθιστά την τιμή που υπάρχει ήδη στον πίνακα θεμάτων με τη νέα τιμή από τη δήλωση εισαγωγής. Έτσι, το SubjectName του " Μαθήματος βάσης δεδομένων " θα αντικατασταθεί με το "Όνομα δεδομένων " SubjectName.
Περίληψη:
Οι όροι INSERT, UPDATE και DELETE χρησιμοποιούνται για την τροποποίηση των δεδομένων στη βάση δεδομένων SQLite. Η ρήτρα CONFLICT είναι μια ισχυρή ρήτρα για την επίλυση οποιασδήποτε διένεξης μεταξύ των δεδομένων και των δεδομένων προς τροποποίηση.