Βίντεο: A Shot that Changed the World - The Assassination of Franz Ferdinand I PRELUDE TO WW1 - Part 3/3 2024
Μπορείτε πιθανόν να δείτε μια επιπλοκή στον τρόπο που ενεργοποιούνται τα SQL triggers. Ας υποθέσουμε ότι δημιουργείτε μια σκανδάλη που προκαλεί την εκτέλεση μιας εντολής SQL σε έναν πίνακα κατά την εκτέλεση μιας προηγούμενης εντολής SQL. Τι θα συμβεί αν αυτή η ενεργοποιημένη δήλωση προκαλεί μια δεύτερη πυροδότηση;
Αυτή η δεύτερη ενεργοποίηση προκαλεί την εκτέλεση μιας τρίτης εντολής SQL σε έναν δεύτερο πίνακα, ο οποίος μπορεί να προκαλέσει την ίδια πυρκαγιά, επηρεάζοντας ακόμα έναν άλλο πίνακα. Πώς είναι δυνατόν να κρατηθούν όλα ευθεία; Το SQL χειρίζεται αυτό το πυροβόλο όπλο σφύρας τύπου μηχανής με κάτι που ονομάζεται περιγράμματα εκτέλεσης ενεργοποίησης .
Μια διαδοχή των διαδικασιών INSERT, DELETE και UPDATE μπορεί να πραγματοποιηθεί με την εμφύτευση των πλαισίων στα οποία εμφανίζονται. Όταν πυροδοτείται μια σκανδάλη, δημιουργείται ένα πλαίσιο εκτέλεσης. Μόνο ένα πλαίσιο εκτέλεσης μπορεί να είναι ενεργό κάθε φορά. Σε αυτό το πλαίσιο, μπορεί να εκτελεστεί μια εντολή SQL που ενεργοποιεί μια δεύτερη ενεργοποίηση.
Σε αυτό το σημείο, το υπάρχον πλαίσιο εκτέλεσης αναστέλλεται σε μια λειτουργία ανάλογη με την ώθηση μιας τιμής σε μια στοίβα. Δημιουργείται ένα νέο πλαίσιο εκτέλεσης, το οποίο αντιστοιχεί στη δεύτερη σκανδάλη, και εκτελείται η λειτουργία του.
Δεν υπάρχει αυθαίρετο όριο στο βάθος της τοποθέτησης. Όταν ολοκληρωθεί μια ενέργεια, το περιβάλλον εκτέλεσης καταστρέφεται και το επόμενο υψηλότερο πλαίσιο εκτέλεσης "ξεδιπλώνεται" και ενεργοποιείται ξανά. Αυτή η διαδικασία συνεχίζεται μέχρι να ολοκληρωθούν όλες οι ενέργειες και να καταστραφούν όλα τα πλαίσια εκτέλεσης.