9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):



Σχετικά έγγραφα
Εργαστήριο Βάσεων Δεδομένων. Triggers

. Εργαστήριο Βάσεων Δεδομένων. Triggers

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

Σχεδιασμός Βάσεων Δεδομένων

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΙΙ. Φοιτητής:... (ΑΕΜ: ) ΣΕΡΡΕΣ, Ιανουάριος 2010

Συνοπτικός Οδηγός Χρήσης του MySQL Workbench

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

10 η Διάλεξη Python Βάσεις δεδομένων στη python

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

databases linux - terminal (linux / windows terminal)

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

4 η Εργαστηριακή Άσκηση

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Βάσεις δεδομένων. (10 ο μάθημα) Ηρακλής Βαρλάμης

2 η Εργαστηριακή Άσκηση

Κεφάλαιο 4. Προχωρημένες λειτουργίες στον SQL Server

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

Ακολουθεί η πλήρης ανάλυση της παραµετροποίησης χωρισµένη στις αντίστοιχες ενότητες µε αυτές του module Customization Tools. :

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

Pascal. 15 Νοεμβρίου 2011

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

Οδηγίες Χρήσης της MySQL

«Κρυπτογράφηση Εταιριών»

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων

MySQL stored procedures

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

του προγράμματος diagrama_rohs.zip )

PL/SQL. Κώστας Στεφανίδης

Σχεδιασμός Βάσεων Δεδομένων

Οδηγός συναλλαγών. Σε CFDs

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Οδηγός συναλλαγών. Σε Futures

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Αντικειμενοστρεφής Προγραμματισμός

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΕΝΗΜΕΡΩΣΗ ΤΩΝ ΔΗΜΟΣΙΩΝ ΟΙΚΟΝΟΜΙΚΩΝ ΥΠΗΡΕΣΙΩΝ (Δ.Ο.Υ.)

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Διαδικασία Πλήρους Διαχείρισης Αδειών Βιβλίο Αδειών Μαζικές ενέργειες

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Κεφάλαιο 2. Δημιουργία Βάσης Δεδομένων και Πινάκων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Οδηγίες Χρήσης της MySQL

Διαχείριση Αδειών - Βιβλίο Αδειών - Μαζικές ενέργειες

Επίλυση προβλήματος με Access

Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Simplifying Complexity. Οδηγός Χρήσης Διαδικτυακής Πλατφόρμας

8. ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ

Pascal. 26 Οκτωβρίου 2011

Τμήμα Πληροφορικής ΑΠΘ

Με την επιλογή Κατάσταση Αρχείων εμφανίζεται ένας πίνακας με όλα τα Αρχεία της εφαρμογής και τον Αριθμό των Εγγραφών που έχουν εισαχθεί.

Εργαστήριο Βάσεων Δεδομένων

Γνωρίστε το Excel 2007

Simplifying Complexity. Οδηγός Χρήσης Διαδικτυακής Πλατφόρμας

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

ALERTS ή EDA (Event Driven Actions)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

XAMPP Apache MySQL PHP javascript xampp

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Epsilon Net PYLON Platform

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Προγραμματιστικό Περιβάλλον

Επεξεργασία πολλαπλών φύλλων εργασίας - Γραφημάτων Excel

Προγραμματισμός Παγκόσμιου Ιστού

MEGASOFT ΤΜΗΜΑ ΤΕΧΝΙΚΗΣ ΥΠΟΣΤΗΡΙΞΗΣ. Οδηγός Σύνδεσης Ταμειακών Μηχανών Online

Πλήρης Διαχείριση Αδειών - Βιβλίο Αδειών - Μαζικές ενέργειες

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Προγραμματισμός ταμειακής ροής για αγορές υλικών

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Εργαστήριο Βάσεων Δεδομένων

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο Βάσεων Δεδομένων


Οδηγός χρήσης. EurobankTrader

Transcript:

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers Σκοπός της παρούσας εργαστηριακής άσκησης, είναι η εξοικείωση του σπουδαστή με τη δημιουργία αποθηκευμένων διαδικασιών (Stored Procedures) και σκανδάλης (trigger) στον MICROSOFT SQL SERVER 2008. Αποθηκευμένες Διαδικασίες (Stored Procedures): Μια store procedure είναι ένα πρόγραμμα που αποτελείται από SQL εντολές καθώς και εντολές προγραμματισμού. Εκτελείται ταχύτερα επειδή έχει προηγουμένως μεταγλωττιστεί στον database server και όχι στο πρόγραμμα εφαρμογής. Παράδειγμα 1 : Μεταβαίνουμε στο SQL Server Management Studio, επιλέγουμε τη βάση μας και με την επιλογή Stored Procedures Δεξί κλικ New Stored Procedure (Βλ. Εικόνα 9.1) ανοίγει ένα παράθυρο όπου γράφουμε τον κώδικα της διαδικασίας CREATE PROCEDURE test AS select "Hallo World" Εικόνα 9.1 Δημιουργία Αποθηκευμένης Διαδικασίας Δρ. Τσιμπίρης Αλκιβιάδης 1

Για να αποθηκευτεί η διαδικασία αυτή πιέζετε το κουμπί!execute από την γραμμή εντολών και στη συνέχεια κάντε refresh στην επιλογή Stored Procedures. Εικόνα 9.2 Ανανέωση των Αποθηκευμένων Διαδικασιών Για να εκτελεστεί η Αποθηκευμένη Διαδικασία που μόλις δημιουργήθηκε πιέζουμε Δεξί κλικ πάνω στη Βάση Δεδομένων και επιλέγουμε New Query Εικόνα 9.3 Δημιουργία νέου ερωτήματος για εκτέλεση των Αποθηκευμένων Διαδικασιών Γράφουμε το όνομα της διαδικασίας και την εκτελούμε πατώντας το!execute από την γραμμή εντολών (εικονίδιο με θαυμαστικό) και βλέπουμε τα αποτελέσματα. Το συγκεκριμένο παράδειγμα τυπώνει hello world. Εικόνα 9.4 Εκτέλεση των Αποθηκευμένων Διαδικασιών Δρ. Τσιμπίρης Αλκιβιάδης 2

Λόγος χρήσης των αποθηκευμένων διαδικασιών (Stored Procedures) : Κάθε διαδικασία εκτελείται στον Database Server, επομένως είναι ανεξάρτητη από την πλατφόρμα εφαρμογής. Επιπλέον λαμβάνουμε ταχύτατα τα αποτελέσματα για τον λόγο ότι η εκτέλεση γίνεται στον Database Server και δεν χρειάζεται η επικοινωνία μέσω δικτύου με την πλατφόρμα εφαρμογής. Στο παράδειγμα 1, εκτελέσαμε Procedure μιας εντολής η οποία θα μπορούσε ναν γραφεί και έξω από το block εντολών. Για να εκτελέσουμε πολλές εντολές σε μια διαδικασία πρέπει υποχρεωτικά να βρίσκονται μέσα σε ένα μπλοκ begin - end. Με τον ίδιο τρόπο που περιγράψαμε πριν δημιουργήστε τις παρακάτω διαδικασίες. Παράδειγμα 2 : CREATE PROCEDURE test2 AS select ASKISI 9 VASEIS DEDOMENON II select Δημιουργία Αποθηκευμένων Διαδικασιών Χρήση μεταβλητών σε διαδικασία : Οι μεταβλητές δηλώνονται με το σύμβολο @ πριν τον ορισμό τους. Παράδειγμα 3 : CREATE PROCEDURE test3 (@var1 INT,@var2 INT) AS SELECT @var1+@var2; GO την καλούμε με 2 ορίσματα : test3 4,6 αποτέλεσμα : 10 Παράδειγμα 4 : Παράδειγμα διαδικασίας που επηρεάζει τις τιμές του πίνακα : CREATE PROCEDURE AFXISI_TIMIS (@POSOSTO INT) AS UPDATE AYTOKINITA SET TIMH_ENOIKIASIS = TIMH_ENOIKIASIS*(1+@POSOSTO/100) GO Έστω ότι θέλουμε να γίνει αύξηση τιμών κατά 10%. Παρατηρούμε τις τιμές του πίνακα πριν την αύξηση. Δρ. Τσιμπίρης Αλκιβιάδης 3

Εφόσον γράψουμε τον παραπάνω κώδικα και πατήσουμε!execute και μετά Refresh μεταβαίνουμε σε νέο Query για να καλέσουμε και να εκτελέσουμε τη διαδικασία γράφοντας «AFXISI_TIMIS 10». Πατώντας!Execute (Εικονίδιο θαυμαστικού), εκτελείται η διαδικασία. Παρατηρούμε τις νέες τιμές ενοικίασης στον πίνακα οι οποίες θα είναι αυξημένες κατά 10%. Σκανδάλες (Triggers): Trigger (Σκανδάλη), ονομάζεται ένα αντικείμενο Βάσης Δεδομένων, το οποίο απευθύνεται σε συγκεκριμένο πίνακα και εκτελείται όταν συμβεί ένα συγκεκριμένο γεγονός σε αυτόν τον πίνακα. Η δήλωση μιας σκανδάλης ακολουθεί το εξής πρότυπο: CREATE TRIGGER trigger_name ON tbl_name AFTER INSERT, DELETE, UPDATE.. όπου: trigger_name : Το όνομα μιας νέας σκανδάλης tbl_name : Το όνομα του πίνακα που αφορά η σκανδάλη AFTER INSERT, DELETE, UPDATE : Το πότε θα εκτελεστούν οι εντολές της σκανδάλης. Για εκτέλεση πολλαπλών ενεργειών, όπως και στις Stored Procedures, χρησιμοποιείται η δομή {εντολές}. Παράδειγμα 5 : Έστω ότι θέλουμε να υπολογίζεται αυτόματα το πεδίο του πίνακα ENOIKIASH, TELIKO_POSO να ισούται με το άθροισμα του TELIKO_POSO συν XREOSH_ZHMIAS σε κάθε ενέργεια INSERT, UPDATE, DELETE στον πίνακα. Δημιουργία σκανδάλης : Αφορά τον πίνακα ENOIKIASH, οπότε ή δημιουργούμε ένα νέο Query ή AYTOKINITA Triggers Δεξί κλικ New Trigger (βλ. Εικόνα 9.9 ) επιλέγουμε Δρ. Τσιμπίρης Αλκιβιάδης 4

Εικόνα 9.5 Δημιουργία Νέας Σκανδάλης Στο παράθυρο που εμφανίζεται γράφουμε τον παρακάτω κώδικα: CREATE TRIGGER TEL_POSO ON ENOIKIASH AFTER INSERT, UPDATE, DELETE AS UPDATE ENOIKIASH SET TELIKO_POSO=POSO_PLHROMHS + XREOSH_ZHMIAS Εφόσον γράψαμε τον κώδικα του Trigger, ελέγχουμε αν είναι σωστή η σύνταξη πατώντας!execute και έχει δημιουργηθεί επιτυχώς η σκανδάλη. Για να δούμε τα αποτελέσματα θα δημιουργήσουμε μια νέα εγγραφή στον πίνακα ENOIKIASH. Αφού εισάγουμε τα απαραίτητα πεδία, φτάνοντας στο πεδίο TELIKO_POSO πατώντας το πλήκτρο TAB, παρατηρούμε ότι το πεδίο υπολογίζεται αυτόματα Παράδειγμα 6 : Εισάγουμε ένα νέο πεδίο στον πίνακα PELATES, με όνομα HLIKIA τύπου INT, στο οποίο θέλουμε να υπολογίζεται αυτόματα η ηλικία του κάθε πελάτη(βλ Εικόνα 1.9.14), από την ημερομηνία γέννησης που υπάρχει ήδη στον πίνακα. Για να δημιουργηθεί αυτή η σκανδάλη πρέπει να γνωρίζουμε δύο συναρτήσεις : DATEDIFF ( YEAR, ΗΜΕΡΟΜΗΝΙΑ_ΑΡΧΗΣ, ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ ) η οποία υπολογίζει τη διαφορά δυο ημερομηνιών (ΗΜΕΡΟΜΗΝΙΑ_ΑΡΧΗΣ, ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ) σε χρόνια, εβδομάδες μέρες (YEAR, WEEK, DAY). GETDATE () η οποία επιστρέφει την τρέχουσα ημερομηνία. Δρ. Τσιμπίρης Αλκιβιάδης 5

Οπότε ο κώδικας της σκανδάλης για τον πίνακα PELATES, διαμορφώνεται όπως παρακάτω : CREATE TRIGGER HLIKIA_PELATH ON [dbo].[pelates] FOR INSERT, UPDATE, DELETE AS UPDATE PELATES SET HLIKIA = DATEDIFF ( YEAR, HM_GENNISIS, GETDATE() ) Καταχωρώντας μια νέα εγγραφή στον πίνακα πελάτες παρατηρούμε ότι υπολογίζεται η ηλικία του πελάτη αυτόματα. Παράδειγμα 7 : Δημιουργούμε έναν πίνακα με όνομα LOG_AUTO στον οποίο με την ενεργοποίηση μιας σκανδάλης (TRIGGER) που θα εφαρμόζεται πάνω στον βασικό πίνακα ΑΥΤΟΚΙΝΗΤΑ, θα αποθηκεύονται οι τροποποιήσεις που θα γίνονται στο πεδίο ΤΙΜΗ_ΕΝΟΙΚΙΑSIS του πίνακα ΑΥΤΟΚΙΝIΤΑ. Ο πίνακας LOG_AUTO περιλαμβάνει : AUTO_NUM τον αριθμό πινακίδας του αυτοκινήτου, USER_ID τον κωδικό του χρήστη που κάνει αλλαγές στον πίνακα, HMEROMHNIA που έχει η αλλαγή στον πίνακα, OLD η παλιά τιμή ενοικίασης, NEW η νέα τιμή ενοικίασης Ο πίνακας μπορεί να δημιουργηθεί είτε χειροκίνητα, όπως δημιουργήσαμε πίνακες στις πρώτες εργαστηριακές ασκήσεις, είτε εκτελώντας το παρακάτω Query : CREATE TABLE LOG_AUTO( AUTO_NUM varchar(10), USER_ID varchar(20), HMEROMHNIA datetime, OLD float, NEW float) Δημιουργούμε λοιπόν ένα Trigger για τον πίνακα AYTOKINITA με τον παρακάτω κώδικα : CREATE trigger t1 on AYTOKINITA AFTER UPDATE AS DECLARE @TIMH_OLD REAL, @TIMH_NEW REAL, @KA INT SELECT @TIMH_NEW =(SELECT TIMH_ENOIKIASIS FROM inserted) SELECT @TIMH_OLD =(SELECT TIMH_ENOIKIASIS FROM DELETED) SELECT @KA =(SELECT KA FROM DELETED) INSERT INTO LOG_AUTO VALUES(@KA,USER_ID(),GETDATE(),@TIMH_OLD, @TIMH_NEW) Δρ. Τσιμπίρης Αλκιβιάδης 6

Εικόνα 9.6 Εντολές Σκανδάλης με μεταβλητές και τους πίνακες Inserted, Deleted. Αλλάζουμε τη τιμή ενοικίασης του FIAT STILO από 220 σε 300 και του MERCEDES SLK από 77 σε 100 αφού πρώτα πατήσουμε κλικ πάνω στον πίνακα ΑΥΤΟΚΙΝΙΤΑ Edit Top 200Raws Ανοίγουμε τον πίνακα AUTO_LOG και παρατηρούμε τις καταχωρήσεις που έκανε αυτόματα, με τη βοήθεια της σκανδάλης : Εικόνα 9.7 Ενεργοποίηση Σκανδάλης. To παράδειγμα αυτό δείχνει το πώς μπορούν να χρησιμοποιηθούν οι σκανδάλες για να υλοποιήσουν ένα ημερολόγιο παρακολούθησης της κίνησης των συναλλαγών των χρηστών πάνω σε έναν πίνακα. Βασική ιδέα των TRIGGER είναι η διαχείριση των προσωρινών πινάκων INSERTED και DELETED όπου καταχωρούνται προσωρινά οι κάθε αλλαγές που επιχειρεί να κάνει κάποιος χρήστης. Σε κάθε τροποποίηση της στήλης TIMH_ENOIKIASIS χρησιμοποιώντας την πρόταση UPDATE ενεργοποιείται η σκανδάλη. Έτσι, οι τιμές των γραμμών των εικονικών πινάκων deleted και inserted εκχωρούνται στις αντίστοιχες μεταβλητές @TIMH_old, @TIMH_new και @auto_number. Οι εκχωρημένες τιμές, μαζί με το όνομα χρήστη και την τρέχουσα ημερομηνία και ώρα, εισάγονται κατόπιν στον πίνακα LOG_AUTO. Δρ. Τσιμπίρης Αλκιβιάδης 7