Βάσεις Δεδομένων ΙΙ Triggers

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
PL/SQL.
Advertisements

Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
1 Εναύσματα και Περιορισμοί Database Management Systems, Antonis Sidiropoulos.
ORACLE PL/SQL Άρης Στουγιαννίδης. ΒΡΟΧΟΣ ΜΕ ΜΕΤΡΗΤΗ FOR REM forloop.sql REM This is an example of a FOR loop. BEGIN FOR v_Counter IN LOOP INSERT.
Copyright © 2006 – Quality & Reliability SA PL/SQL TRIGGERS ΜΕΡΟΣ 1.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
1 26/6/2015 Προγραμματισμός Διαδικτύου – Lecture 8 LECTURE 8 Using Databases with PHP Scripts: Using MySQL Database with PHP Προγραμματισμός Διαδικτύου.
Βάσεις Δεδομένων II (Θ) Ενότητα 11: SQL διαγνωστικά σφαλμάτων (SQL error diagnostics), δήλωση Get Diagnostics Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής.
Βάσεις Δεδομένων II (Θ) Ενότητα 9: Συναλλαγές (Transactions) στο προϊόν mySQL Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο.
Βάσεις Δεδομένων II (Θ) Ενότητα 8: Συναλλαγές (Transactions) Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το.
Διοίκηση Τεχνολογίας Εργασία: “Sources of Innovation” Πρόγραμμα:MBA Part-Time.
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ Ι ΘΕΩΡΙΕΣ ΜΑΘΗΣΗΣ ΚΑΙ ΝΕΕΣ ΤΕΧΝΟΛΟΓΙΕΣ (Learning Theories and.
Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,
Διαχείριση Διαδικτυακής Φήμης! Do the Online Reputation Check! «Ημέρα Ασφαλούς Διαδικτύου 2015» Ε. Κοντοπίδη, ΠΕ19.
Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,
Εισαγωγή στις βάσεις δεδομένων
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι να παρουσιάσει τις απαραίτητες έννοιες ώστε οι φοιτητές να κατανοήσουν την τεχνολογία των βάσεων δεδοµένων.
Αντισταθμιστική ανάλυση
Επικοινωνιακός Προγραμματισμός Ι
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Σύστημα διαχείρισης αρχείων (file system)
Βάσεις Δεδομένων Ι 4η διάλεξη
Όνομα Καθηγητή: Χρήστος Τερέζης
Αξιολόγηση επενδύσεων
Ενότητα 8 : Βάσεις Δεδομένων (2/2) Δρ. Γκόγκος Χρήστος
SPACE “Exploring the City surrounding our Prison: a glimpse from Inside to the Outside.” SDE DIAVATON.
Σύντομη περιγραφή Μια περιήγηση σε αφυπνιζόμενα προγράμματα (triggers), δηλαδή προγράμματα ενεργοποιούμενα από ενέργειες INSERT, UPDATE, DELETE στη βάση.
Ανάγκες των ασθενών Φυσικές ανάγκες
Περιγραφή Ενότητας Σκοπός του μαθήματος αυτού και κεντρικός σκοπός του μαθήματος των Βάσεων Δεδομένων Ι είναι η παρουσίαση των απαραίτητων εννοιών ώστε.
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Συνείδηση Επίπεδα Προϋποθέσεις καλής λειτουργίας Διαταραχές.
Έλεγχος λογισμικού Ποιότητα Λογισμικού Black Box testing
Data Warehouse – Data Mining
Στρατηγική Διοίκηση και ο Επιχειρηματίας
Προδιαγραφές Αναλυτική περιγραφή μαθήματος
Σκοπός & Στόχος Μαθήματος
Μοντελοποίηση Βαθμός Συσχέτισης Βαθμός μιας συσχέτισης ονομάζεται ο αριθμός των οντοτήτων που συνδέει. Συνήθως οι συσχετίσεις μεταξύ δύο οντοτήτων.
Βάσεις Δεδομένων και web-based Εφαρμογές
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι να κατανοήσουμε την έννοια της όψης της γλώσσας SQL. Χ. Σκουρλάς.
Ανάπτυξη ηλεκτρονικών μαθημάτων στην πλατφόρμα Open eClass
Υδρόβια Φυτά Θεοφανώ Κούλεντρου Rippling Water (Basic)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΒΧΔ Πολλαπλών κλιμάκων
Σκοπός Μαθήματος Σκοπός του μαθήματος είναι να παρουσιάσει τις έννοιες των Συναλλαγών (Transactions) στο προϊόν mySQL. 1.
ΠΕΡΙΒΑΛΛΟΝΤΙΚΗ ΠΟΛΙΤΙΚΗ & ΝΟΜΟΘΕΣΙΑ Οικονομικά Εργαλεία & Περιβαλλοντική Προστασία στην Ελλάδα ΜΑΘΗΜΑ 10.
Αρχιτεκτονική Συστημάτων
Αξιολόγηση επενδύσεων
Βάσεις Δεδομένων και web-based Εφαρμογές
Όνομα Καθηγητή: Χρήστος Τερέζης
Αξιολόγηση επενδύσεων
ΓΛΩΣΣΕΣ & ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Εξόρυξη δεδομένων και διαχείριση δεδομένων μεγάλης κλίμακας
Τεχνικές Μάλαξης (Ε) Ενότητα 13: Αυχενική μοίρα – Εφαρμογές
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Επικοινωνιακός Προγραμματισμός Ι
Επικοινωνιακός Προγραμματισμός Ι
Βάσεις Δεδομένων ΙΙ Ενότητα 8: Συναλλαγές (Transactions) Χ. Σκουρλάς
Βάσεις Δεδομένων ΙΙ (SQL error diagnostics), δήλωση Get Diagnostics
Σχεσιακεσ βασεισ δεδομενων
Βάσεις Δεδομένων ΙΙ Ενότητα 5: Μελέτη περιπτώσεως:
ΕΝΣΤΑΣΕΙΣ ΠΟΙΟΣ? Όμως ναι.... Ένα σκάφος
Find: ρc [in] from load γT=110 [lb/ft3] γT=100 [lb/ft3]
ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή
Ενότητα 1: «Προσανατολισμού» (orientation) - Εισαγωγή Χ. Σκουρλάς
Σύσταση και Ανάλυση Γλευκών και Οίνων (Θ)
Find: ρc [in] from load (4 layers)
Μεταγράφημα παρουσίασης:

Βάσεις Δεδομένων ΙΙ Triggers Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Βάσεις Δεδομένων ΙΙ Ενότητα 12a: Stored Procedures BY EXAMPLE: Triggers Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σκοπός & Στόχος Μαθήματος Σκοπός της παρουσίασης είναι η εμβάθυνση στη χρήση Stored Procedures και ειδικότερα σε Triggers Στόχος Στόχος είναι η εκμάθηση της χρήσηςTriggers ώστε ο φοιτητής να προσεγγίσει το επίπεδο ενός ικανού developer. Λέξεις κλειδιά: Stored Procedures, triggers

Χρήση Stored procedures Εξασφαλίζει: Αυξημένη παραγωγικότητα (Increased productivity) Ευέλικτη διαχείριση της ανάπτυξης εφαρμογών (Manageability in application development) Οι Stored routines επιτρέπουν σε τμήματα της εφαρμογής (parts of application logic) να αποθηκευθούν στη βάση για λόγους ασφαλείας και επίδοσης (for security and performance Reasons). Οι ίδιες routines διατίθενται για πολλαπλή χρήση (for multi-use), σε διαφορετικές συναλλαγές ή από πολλαπλά προγράμματα (by multiple programs).

«Αποθήκευση» stored procedures Martti Laiho

Triggers “Triggers supplement the SQL constraints in enforcing data Integrity and implementing business rules (North 1999).” “In the chapter “When Not to Use Triggers” Avi Silberschatz et all (2011) agrees that there are many good uses for triggers, but developers should first consider alternative available technologies, such as update/delete rules of foreign keys, materialized views, and modern replication facilities instead of over-using triggers, - and when used “Triggers should be written with great care”. Detecting trigger errors at runtime can be a really challenging task.” (see Introduction to Procedural Extensions of SQL in Transactional Context )

CREATE TRIGGER Syntax in mySQL CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW [trigger_order] trigger_body trigger_time: { BEFORE | AFTER } trigger_event: { INSERT | UPDATE | DELETE } trigger_order: { FOLLOWS | PRECEDES } other_trigger_name (see 13.1.15 CREATE TRIGGER Syntax)

Πως ορίζεται η βάση δεδομένων, οι πίνακές της. Drop database training; CREATE DATABASE training; USE training; CREATE TABLE lecturer(lecturer_id int(3), lecturer_surname varchar(15), lecturer_name varchar(15), city varchar(15), salary decimal (8,2), course_id int, course_name varchar(15)); CREATE TABLE course(course_id int, course_name varchar(50));

Ορισμός trigger για τη διαχείριση τιμής στήλης (salary) drop trigger bi_lecturer; DELIMITER // create trigger bi_lecturer before insert on lecturer for each row Begin declare name_l int; set name_l = length(new.lecturer_name); set new.salary = new.salary + (new.salary * name_l)/10; end; // DELIMITER ;

Εισαγωγή στοιχείων. Επηρεάζεται από τον trigger INSERT INTO course VALUES (1, 'DATABASE'); INSERT INTO course VALUES (2, 'WEB DEVELOPMENT'); INSERT INTO course VALUES (3, 'DATA MINING'); INSERT INTO course VALUES (4, 'SEMANTIC WEB'); Select * From COURSE;

INSERT INTO lecturer(lecturer_id, lecturer_name, lecturer_surname, city, salary, course_id) VALUES (1, 'CHRIS', 'DATE', 'LONDON', 2000, 1), (2, 'GIO', 'WIEDERHOLD', 'ATHENS', 1500, 1), (3, 'PETER', 'CHEN', 'ATHENS', 3500, 2), (4, 'JEFF', 'ULLMAN', 'ATHENS', 1700, 1), (5, 'TED', 'CODD', 'ATHENS', 2500, 2);  Δείτε τις τιμές της στήλης salary SELECT lecturer_id, lecturer_surname, lecturer_name, salary, course_id FROM lecturer;

Δείτε τις τιμές της στήλης course_name SELECT lecturer_id, lecturer_surname, lecturer_name, course_id, course_name FROM lecturer;

USE training; CREATE TABLE lecturer(lecturer_id int(3), lecturer_surname varchar(15), lecturer_name varchar(15), city varchar(15), salary decimal (8,2), course_id int, course_name varchar(15)); CREATE TABLE course(course_id int, course_name varchar(50));

Ορισμός trigger για τη διαχείριση τιμής στήλης (course_name) Drop database training; CREATE DATABASE training; Drop trigger bi_lect_add_dname; DELIMITER //   create trigger bi_lect_add_dname before insert on lecturer for each row begin declare dname_var varchar(40); select course_name into dname_var from course where course_id = new.course_id; set new.course_name = dname_var; end; // DELIMITER ;   INSERT INTO course VALUES (1, 'DATABASE'); INSERT INTO course VALUES (2, 'WEB DEVELOPMENT'); INSERT INTO course VALUES (3, 'DATA MINING'); INSERT INTO course VALUES (4, 'SEMANTIC WEB');

INSERT INTO lecturer(lecturer_id, lecturer_name, lecturer_surname, city, salary, course_id) VALUES (1, 'CHRIS', 'DATE', 'LONDON', 2000, 1), (2, 'GIO', 'WIEDERHOLD', 'ATHENS', 1500, 1), (3, 'PETER', 'CHEN', 'ATHENS', 3500, 2), (4, 'JEFF', 'ULLMAN', 'ATHENS', 1700, 1), (5, 'TED', 'CODD', 'ATHENS', 2500, 2); Να το αποτέλεσμα της εκτέλεσης του trigger κατά την εισαγωγή στοιχείων στον πίνακα lecturer SELECT lecturer_id, lecturer_surname, lecturer_name, course_id, course_name FROM lecturer;

δύο (2) triggers με την ίδια συνθήκη ενεργοποίησης Drop database training; CREATE DATABASE training; USE training; CREATE TABLE lecturer(lecturer_id int(3), lecturer_surname varchar(15), lecturer_name varchar(15), city varchar(15), salary decimal (8,2), course_id int, course_name varchar(15)); CREATE TABLE course(course_id int, course_name varchar(50));

drop trigger bi_lecturer; DELIMITER // create trigger bi_lecturer before insert on lecturer for each row Begin declare name_length int; declare dname_var varchar(40); select course_name into dname_var from course where course_id = new.course_id; set new.course_name = dname_var; set name_length = length(new.lecturer_name); set new.salary = new.salary + (new.salary * name_length)/10; end; // DELIMITER ;

INSERT INTO course VALUES (1, 'DATABASE'); INSERT INTO course VALUES (2, 'WEB DEVELOPMENT'); INSERT INTO course VALUES (3, 'DATA MINING'); INSERT INTO course VALUES (4, 'SEMANTIC WEB'); Select * From COURSE; INSERT INTO lecturer(lecturer_id, lecturer_name, lecturer_surname, city, salary, course_id) VALUES (1, 'CHRIS', 'DATE', 'LONDON', 2000, 1), (2, 'GIO', 'WIEDERHOLD', 'ATHENS', 1500, 1), (3, 'PETER', 'CHEN', 'ATHENS', 3500, 2), (4, 'JEFF', 'ULLMAN', 'ATHENS', 1700, 1), (5, 'TED', 'CODD', 'ATHENS', 2500, 2); Να τι βλέπουμε SELECT lecturer_surname, lecturer_name, salary, course_id, course_name FROM lecturer;

Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: “SQL Transactions” Educational and Training Content, The DBTech VET Teachers (EU LLP Transfer of Innovation) project, 1/10/2012 – 30/9/2014. Retrieved 14 May 2013. http://www.dbtechnet.org, διαθέσιμο με άδεια CC BY-NC-SA 3.0

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.