|
|
Δημοσιεύτηκε στις 15/3/2019 10:45:21 μ.μ.
|
|
|
|

πρόλογος
Την τελευταία φορά, επρόκειτο να οργανώσω όλο το βασικό περιεχόμενο της SQL, αλλά διαπίστωσα ότι το ρολόι γύριζε πριν το καταλάβω. Αυτό το άρθρο συνεχίζεται παρακάτω.
Κείμενο
Αρχικά, ας δημιουργήσουμε τους πίνακες που χρειαζόμαστε
Ας εκτελέσουμε πρώτα μια δήλωση SQL
Αυτός ο κωδικός αφαιρεί το υπόλοιπο του 0001 επί 1000 και το υπόλοιπο του 0002 επί 1000. Αλλά προσθέσαμε περιορισμούς όταν φτιάξαμε τον πίνακα και το υπόλοιπο πρέπει να είναι μεγαλύτερο ή ίσο με 10.
Τα αποτελέσματα έχουν ως εξής:
Έτσι, αυτό το σφάλμα εκτέλεσης κώδικα: "Η δήλωση UPDATE έρχεται σε διένεξη με τον περιορισμό CHECK "CH_balance". Η διένεξη παρουσιάζεται στη βάση δεδομένων "DemoDb" με τον πίνακα "dbo. Bank", στήλη 'υπόλοιπο'。” 。 Εάν μια δήλωση είναι λάθος, τότε εάν η άλλη δήλωση έχει εκτελεστεί με επιτυχία.
Τα αποτελέσματα του ερωτήματος είναι τα εξής:
Θα δούμε ότι μια άλλη δήλωση SQL δεν έχει σφάλματα, αλλά εξακολουθεί να μην δεσμεύεται με επιτυχία. Εδώ είναι τι θα σας αποκαλύψουμε.
#Συναλλαγές
Τι είναι η Συναλλαγή; Αυστηρά μιλώντας, εάν μια πράξη ικανοποιεί την ατομικότητα, την επιμονή, την απομόνωση και τη συνέπεια, τότε η πράξη ονομάζεται συναλλαγή. Αυτόματη υποβολή συναλλαγών: στον SQL Server. Από προεπιλογή, κάθε πρόταση SQL είναι μια συναλλαγή. Εμφάνιση συναλλαγών: Κάθε συναλλαγή ξεκινά ρητά με μια δήλωση BEGIN TRANSACTION και τελειώνει ρητά με μια δήλωση COMMIT ή ROLLBACK.
Το demo που μόλις αναφέραμε παραπάνω τελείωσε με Rollback, οπότε η εκτέλεση SQL δεν τίθεται σε ισχύ. Τα δεδομένα δεν τροποποιήθηκαν με επιτυχία.
Στην πραγματική ανάπτυξη και εφαρμογή, συνήθως δημιουργούμε ένα επίπεδο συναλλαγών εκτός της δήλωσης μη ερωτήματος για να διασφαλίσουμε την ακεραιότητα και τη συνέπεια των δεδομένων σύμφωνα με τις πραγματικές ανάγκες. Είτε κάντε τα όλα είτε μην τα κάνετε όλα.
Υπάρχουν δύο μεταβλητές συστήματος που καταγράφουν την SQL που είναι ελαττωματική. - @@rowcount επιστρέφει τον αριθμό των επηρεαζόμενων γραμμών @@error επιστρέφει λάθος κωδικοποίηση
Ας χρησιμοποιήσουμε αυτές τις δύο μεταβλητές συστήματος για να προσδιορίσουμε εάν υπάρχει σφάλμα στην SQL και να εκτελέσουμε τις δύο παραπάνω δηλώσεις SQL.
#Αποθηκευμένες διαδικασίες
Σημασία: Ενσωματώστε μια διαδικασία που εκτελείται (η οποία μπορεί να είναι πολύπλοκη) σε ένα όνομα και, στη συνέχεια, χρησιμοποιήστε αυτό το όνομα για να εκτελέσετε τη διαδικασία.
> Αποθηκευμένες διαδικασίες χωρίς παραμέτρους
>Αποθηκευμένες διαδικασίες με παραμέτρους
>Αποθηκευμένη διαδικασία με επιστρεφόμενη τιμή
Δοκιμάστε το Catch στη βάση δεδομένων
Υπάρχουν επίσης αποθηκευμένες διαδικασίες με προεπιλεγμένες παραμέτρους, οι οποίες αναφέρθηκαν στο προηγούμενο άρθρο σχετικά με τη σελιδοποίηση.
Επίλογος
Οι αποθηκευμένες διαδικασίες χρησιμοποιούνται περισσότερο στα πραγματικά μας έργα, πολλά αρχαία συστήματα, η επιχειρηματική λογική είναι γραμμένη σε αποθηκευμένες διαδικασίες και οι άνθρωποι πίσω τη συντηρούν και θέλουν απλώς να σφυρηλατήσουν το κεφάλι του σκύλου μπροστά τους μέσα σε λίγα λεπτά. Σε γενικές γραμμές, η επιχειρηματική λογική γράφεται στον κώδικα, αλλά ο αριθμός των φορών που διαβάζονται τα δεδομένα από τη βάση δεδομένων και η επιχειρηματική λογική γράφεται στη διαδικασία αποθήκευσης. Πέρυσι, μια πολύ περίπλοκη σειρά επιχειρηματικής λογικής στο έργο της εταιρείας μεταφέρθηκε στη διαδικασία αποθήκευσης, η οποία αύξησε την ταχύτητα κατά δεκάδες φορές. Φυσικά, οι ειδικές περιστάσεις αντιμετωπίζονται ειδικά. Η συγκεκριμένη εφαρμογή εξαρτάται από το πραγματικό σενάριο.
(Σημείωση: Το παραπάνω περιεχόμενο είναι οι σημειώσεις μελέτης της χρονιάς, αν υπάρχει κάτι ακατάλληλο, διορθώστε το!) )
|
Προηγούμενος:Νιώθω για το σύστημα εξυπηρέτησης πελατών μεγάλων εταιρειώνΕπόμενος:Βίντεο του Andale HCNP και του HCIE
|