Lecture 18: Internal DB Programming I

Σχετικά έγγραφα
Lecture 18: Internal DB Programming I

Διάλεξη 17: Προγραμματισμός Βάσης Δεδομένων Ι. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 18: Προγραμματισμός Βάσης Δεδομένων ΙΙ. Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

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

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

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

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

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

MySQL Εργαστήριο #5 Ενεργοποιητές (συνέχεια)

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Lecture 19: Internal DB Programming II

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

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Constructors and Destructors in C++

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Βάσεις Δεδομέμωμ. Δξγαζηήξην Ι. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

Εγκατάσταση του πακέτου XAMPP. Β Τεχνική Σχολή Λεμεςοφ Σχολική χρονιά Άριςτοσ Παςιάσ

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

EL Eνωμένη στην πολυμορυία EL A8-0046/319. Τροπολογία

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

γηα ηνλ Άξε Κσλζηαληηλίδε

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

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

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

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

ΥΡΙΣΟΤΓΔΝΝΙΑΣΙΚΔ ΚΑΣΑΚΔΤΔ

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

x x x x tan(2 x) x 2 2x x 1

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

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

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

; ΘΕΜΑΤΑ Β. CREATE PROCEDURE PROC1 REAL) AS UPDATE KATATHESEIS SET POSO_KATATHESHS =

Βάσεις Δεδομένων (Databases)

Πανελλήνια Έρεσνα «Καηαναλωηής & Ελληνικό Προϊόν»

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

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ

Lecture 8: RM I + RA I

Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο κόζηος ανά μονάδα παραγωγής. Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο ζηαθερό κόζηος ανά μονάδα παραγωγής

Η αξρή ζύλδεζεο Client-Server

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Lecture 21: Functional Dependencies and Normalization

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

Σρήκα Α. Γξάθνπκε ηα ζηνηρεία ηνπ Πξνκεζεπηή θαη παηάκε Δηζαγσγή. Σρήκα Β1

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

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

Κεθάιαην 20. Ελαχιστοποίηση του κόστους

Lecture 14: SQL DML I

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΜΗΧΑΝΟΛΟΓΙΚΟ ΣΧΔΓΙΟ ΙΙ

ΧΩΡΙΚΕΣ ΣΧΕΣΕΙΣ ΚΑΙ ΓΕΩΜΕΤΡΙΚΕΣ ΕΝΝΟΙΕΣ

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0

Παλαιοσλαβική Γλώσσα. Ενότητα 11: Μορφολογία Τα Ονόματα/Αντωνυμίες. Αλεξάνδρα Ιωαννίδου. Τμήμα Σλαβικών Σπουδών

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

α) ηε κεηαηόπηζε x όηαλ ην ζώκα έρεη κέγηζην ξπζκό κεηαβνιήο ζέζεο δ) ην κέγηζην ξπζκό κεηαβνιήο ηεο ηαρύηεηαο

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Transcript:

Department of Computer Science University of Cyprus EPL342 Databases Lecture 18: Internal DB Programming I Views/Assertions/Triggers (Chapter 8.7-8.8, Elmasri-Navathe 5ED + ΤransactSQL Reference Guide http://msdn.microsoft.com/en-us/library/bb510741.aspx) Demetris Zeinalipour http://www.cs.ucy.ac.cy/courses/epl342 18-1

Πεξηερόκελν Γηάιεμεο Οινθιήξσζε Γηάιεμεο 17. Κεθάιαην 8.7-8.8: SQL Programming I Όςεηο (Views) ζε SQL θαη TSQL Βεβαηώζεηο (Assertions) ζε SQL Σθαλδάιεο (Triggers) ζε SQL θαη TSQL 18-2

Όςεηο ζε SQL (Views in SQL) Μηα όςε είλαη έλαο λνεηόο πίλαθαο ( virtual table) ν νπνίνο παξάγεηαη από άιινπο θαλνληθνύο πηλάθεο (Base-Tables) Σηελ πξάμε κηα όςε δελ είλαη ηίπνηα πεξηζζόηεξν από κηα απνζεθεπκέλε επεξώηεζε SELECT! Π.ρ., a) CREATE VIEW dbo.employee_names AS SELECT FNAME, LNAME FROM EMPLOYEE b) SELECT * FROM dbo.employee_names c) DROP VIEW dbo.employee_view 18-3

Όςεηο ζε SQL (Χαξαθηεξηζηηθά) Χαξαθηεξηζηηθά Όςεσλ Μπνξνύλ λα ρξεζηκνπνηεζνύλ όπσο ηα ππόινηπα tables (ζε επεξσηήζεηο, ζπλελώζεηο, ζπλαζξνίζεηο, θηι) Πεξηέρνπλ ΠΑΝΤΑ ελεκεξσκέλα δεδνκέλα. Τα δεδνκέλα κηαο όςεο ΓΔΝ απνζεθεύνληαη θπζηθά θάπνπ (ηα δεδνκέλα απνζεθεύνληαη ζηα base tables) Μπνξνύκε λα εθηειέζνπκε αιιαγέο ζε κηα όςε (INSERT/UPDATE/DELETE) Δλεκεξώζεηο γίλνληαη κόλν εάλ ε όςε νξίδεηαη από έλα basetables (όρη από πεξηζζόηεξα base-tables) Δπίζεο, όςεηο κε aggregates & groupby ΓΔΝ ελεκεξώλνληαη. Δθηέιεζε κηαο Όςεο ΓΔΝ είλαη πην γξήγνξν από κηα εθηέιεζε ηεο αληίζηνηρεο SELECT επεξώηεζεο. Απηό επεηδή ην VIEW εηζάγεη θάπνηo overhead. 18-4

Όςεηο ζε SQL (Πιενλεθηήκαηα) Πιενλεθηήκαηα Όςεσλ Μεηώλνπλ ηελ πνιππινθόηεηα αλάπηπμεο: Απηό ζπκβαίλεη επεηδή κπνξνύκε λα αλαπαξαζηήζνπκε πεξίπινθεο επεξσηήζεηο σο λνεηνύο πίλαθεο. Αζθάιεηα: Δπηηξέπνπλ ζηνλ DBA λα εθζέζεη κόλν ηηο ζηήιεο πνπ επηζπκεί ζε ζπγθεθξηκέλεο νκάδεο ρξεζηώλ. Όπσο όιεο νη δπλαηόηεηεο, νη όςεηο πξέπεη λα ρξεζηκνπνηνύληαη κε πξνζνρή θαη όηαλ ζεσξνύληαη απαξαίηεηεο! 18-5

Όςεηο ζε SQL (Παξάδεηγκα Όςεο ζε TSQL) Όςε κε ζπλάζξνηζε ζην SELECT. CREATE VIEW Emp_Sal2 AS SELECT dno, SUM(salary) AS sumname FROM Employee GROUP BY dno Δπηζεκάλζεηο: Σε πεξίπησζε ελεκέξσζεο ηνπ πίλαθα EMPLOYEE ελεκεξώλεηαη απηόκαηα ε όςε. Η ίδηα ε όςε ΓΔΝ κπνξεί λα ελεκεξσζεί από ηνλ ρξήζηε κε INSERT/UPDATE/DELETE (ιόγσ ηνπ aggregate / group-by ην). Π.ρ., UPDATE Emp_Sal2 SET dno=1 Πξηλ ηελ Δλεκέξσζε ηνπ EMPLOYEE Μεηά ηελ Δλεκέξσζε ηνπ EMPLOYEE 18-6

Όςεηο ζε SQL (Σύληαμε Όςεσλ ζε TSQL) CREATE VIEW [<schema-name>].<view.name> [(columnname-list>)] [WITH ENCRYPTION] [[,] SCHEMABINDING] AS <SELECT statement> [WITH CHECK OPTION] [;] <schema-name>: dbo (default), guest, θηι. <column-name-list>: νλόκαηα γλσξηζκάησλ ηεο λέαο όςεο WITH ENCRYPTION: Ο SQL θώδηθαο ηεο όςεο θσδηθνπνηείηαη κέζα ζηε βάζε γηα λα κελ κπνξεί λα ηνλ δεη θαλείο (νύηε θαη εζείο!). Γηα λα δείηε ηνλ θώδηθα κε-θσδηθνπνηεκελ. όςεσλ: EXEC sp_helptext view_name; SCHEMABINDING: Γηαζθαιίδεη όηη ε όςε ΓΔΝ ζα κείλεη νξθαλή ζε πεξίπησζε δνκηθώλ αιιαγώλ ζηα basetables. Π.ρ., εάλ δηαγξαθεί ν πίλαθαο πάλσ ζηνλ νπνίν νξίδεηαη ε όςε. WITH CHECK OPTION: Καηά ηελ ηξνπνπνίεζε (insert(x)/update(χ)) κηαο όςεο ειέγρεη όηη ην X είλαη ζύκθσλα κε ην WHERE ηνπ <SELECT statement> 18-7

Όςεηο ζε SQL (Παξάδεηγκα Όςεο ζε TSQL) USE AdventureWorks; -- change to specified database context GO -- not tsql cmd. Instructs SQLStudio to execute statements. IF OBJECT_ID ('dbo.seattleonly', 'V') IS NOT NULL DROP VIEW dbo.seattleonly; View Identifier GO OBJECT_ID (int) uniquely identifies objects in DB CREATE VIEW dbo.seattleonly WITH SCHEMABINDING - structural changes to Person.Contact (e.g., drop) will be prohibited. AS SELECT c.lastname, c.firstname FROM Person.Contact AS c WHERE c.city = 'Seattle' WITH CHECK OPTION; -- any addition to this view has to obey the WHERE condition(i.e., c.city= Seattle ) GO 18-8

Βεβαηώζεηο ζε SQL (CREATE ASSERTION) - OXI ΣΔ TSQL Μηα Βεβαίσζε (ASSERTION) είλαη έλαο θαλόλαο πνπ νξίδεηαη πάλσ από πνιιαπινύο πίλαθεο. Απηόο ν θαλόλαο ειέγρεηαη θαηά νπνηαδήπνηε αιιαγή ηεο θαηάζηαζεο ησλ εκπιεθόκελσλ Πηλάθσλ (INSERT, UPDATE) Αληίζηνηρν κε ην CHECK πνπ νξίδεηαη σζηόζν κόλν πάλσ ζε έλα πίλαθα: Π.ρ. age int check (age>20); Δπηζεκάλζεηο Τα Assertions ΓΔΝ νξίδνληαη ζε TSQL άιια νξίδνληαη ζε αξθεηέο άιιεο βάζεηο όπσο PostgreSQL Τα Assertions είλαη όκνηα κε ηηο ζθαλδάιεο ηα νπνία ζα κειεηήζνπκε ζε ιίγν. 18-9

Βεβαηώζεηο ζε SQL ASSERTION: Παξάδεηγκα Σεκαζηνινγηθόο Πεξηνξηζκόο: Ο κηζζόο ελόο employee ΓΔΝ πξέπεη λα είλαη κεγαιύηεξνο από ηνλ κηζζό ηνπ manager ηνπ department ζην νπνίν δνπιεύεη ν employee CREATΕ ASSERTION SALARY_CONSTRAINT CHECK (NOT EXISTS Σπλζήθε Βεβαίσζεο ) (SELECT * FROM EMPLOYEE E, EMPLOYEE M, DEPARTMENT D WHERE E.DNO=D.NUMBER AND D.MGRSSN=M.SSN ) AND E.SALARY > M.SALARY Όλνκα Βεβαίσζεο 18-10

Σθαλδάιεο ζε SQL (SQL Triggers) Μηα Σθαλδάιε (Τrigger) νξίδεη κηα αληίδξαζε ηεο βάζεο δεδνκέλσλ ζε πεξίπησζε αιιαγώλ πιεηάδσλ* (INSERT, DELETE, UPDATE) ζε θάπνηνπο πξνζδηνξηζκέλνπο πίλαθεο. ASSERTIONS: απαγνξεύνπλ θάπνηα θαηάζηαζε Π.ρ., o κηζζόο ηνπ ππαιιήινπ ΓΔΝ κπνξεί λα είλαη κεγαιύηεξνο από απηόλ ηνπ supervisor ηνπ. TRIGGERS: δελ ζεκαίλεη απαξαίηεηα όηη απαγνξεύνπλ κηα θαηάζηαζε, άπια νξίδνπλ αθνινπζία εληνιώλ πνπ πξέπεη λα ελεξγνπνηεζεί όηαλ ηθαλνπνηεζεί κηα ζπλζήθε π.ρ., όηαλ πξνζηεζνύλ/αθαηξεζνύλ ιεθηά από ηνλ ινγαξηαζκό θάπνηνπ πειάηε, ζηείιε email ζηνλ πειάηε γηα λα ηνλ ελεκεξώζεηο Τν SELECT, TRUNCATE ή BULK INSERT δελ ελεξγνπνηνύλ EPL342: Databases ηηο ζθαλδάιεο - Demetris Zeinalipour ζε (University TSQL. of Cyprus) 18-11

Καηεγνξίεο Σθαλδάισλ Τα triggers ρσξίδνληαη ζε δπν θαηεγνξίεο: DDL Triggers: Οξίδνπλ ηελ αληίδξαζε ζε δνκηθέο αιιαγέο (DROP, ALTER, θηι). DML Τriggers: Οξίδνπλ ηελ αληίδξαζε ζε αιιαγέο πάλσ ζε πιεηάδεο κηαο ζρέζεο ή όςεο (INSERT, UPDATE, DELETE). Θα επηθεληξσζνύκε κόλν ζηα DML Triggers. Σεκεηώζηε όηη ηα Triggers είλαη νπζηαζηηθά «κηθξά πξνγξάκκαηα ζε (T)SQL» τα οποία καλούνται ΑΥΤΟΜΑΤΑ μόλις ενεργοποιηθεί η ορισμένη σσνθήκη η οποία ιστύει πάνω σε κάποιοσς πίνακες ή όψεις. Τα triggers ΔΕΝ μπορούμε να τα καλέσοσμε (invoke) αστόνομα (π.τ., με SELECT ή EXEC) 18-12

Απιό Παξάδεηγκα Trigger ζε TSQL -- Παξάδεηγκα ζθαλδάιεο πνπ παξάγεη κήλπκα ιάζνπο όπνηε γίλεη εηζαγσγή/δηαγξαθή δεδνκέλσλ από ην Δmp1 Table USE epl342; GO IF OBJECT_ID ('Reminder1', 'TR') trigger IS NOT NULL DROP TRIGGER Reminder1; GO CREATE TRIGGER reminder1 ON Emp1 AFTER INSERT, UPDATE AS -- ακολοσθούν οι εντολές ποσ πρέπει να εκτελεστούν RAISERROR ('Notify Customer Relations', 16, 1); GO Severity: 0-18: Specified by User 20-25: FATAL Errors 18-13 State: 0-255

Απιό Παξάδεηγκα Trigger ζε TSQL Καηά ηελ εηζαγσγή/ελεκέξσζε δεδνκέλσλ ζηνλ Πίλαθα Emp1 επηζηξέθεηαη κήλπκα ιάζνπο δηόηη ελεξγνπνηείηαη ε ζθαλδάιε. 18-14

Σύληαμε Σθαλδάιεο ζε TSQL CREATE TRIGGER <trigger-name> ON [schema-name>.] <table view-name> [WITH ENCRYPTION] -- trigger code is encrypted in DB [EXECUTE AS <CALLER SELF <user>] -- Default: Caller (of change), SELF: Creator of Trigger, user: {{FOR AFTER} <[DELETE] [,] [INSERT] [,] [UPDATE]>} AS <sql-statements> FOR AFTER: Αλαθέξνληαη ζην ίδην πξάγκα θαη πξνζηίζεηαη γηα λα είλαη πην επαλάγλσζηνο ν θώδηθαο, π.ρ., AFTER DELETE AS IF EXISTS (SELECT.) BEGIN SQL Statements.. END Πεξηζζόηεξα: http://msdn.microsoft.com/e n-us/library/ms188354.aspx 18-15

Σύληαμε Σθαλδάιεο ζε TSQL Άιιεο Χξήζηκεο Πιεξνθνξίεο γηα TRIGGERS Πξνζσξηλή Απελεξγνπνίεζε Σθαλδάιεο ALTER TABLE <table-name> <ENABLE DISABLE> TRIGGER <ALL <triggername>> Οη ζθαλδάιεο κπνξεί λα θαινύληαη αλαδξνκηθά κέρξη θαη 32 επίπεδα. Η εθηέιεζε κηαο ζθαλδάιεο κπνξεί λα πξνθαιέζεη ηελ αιπζηδσηή εθηέιεζε άιισλ ζθαλδαιώλ κε απξόζκελα απνηέιεζκα ζπκεζείηε ην ON DELETE CASCADE παξάδεηγκα ην νπνίν κπνξνύζε λα ζβήζεη όιν ηνλ πίλαθα ησλ EMPLOYEEs. 18-16

Γηαδηθαζηηθόο Πξνγξακκαηηζκόο κέζα ζηελ Βάζε Γεδνκέλσλ! Οη Σθαλδάιεο ζε κηα βάζε δεδνκέλσλ κπνξεί λα γίλνπλ αξθεηά πεξίπινθεο κε ηελ ρξήζε εληνιώλ δηαδηθαζηηθνύ πξνγξακκαηηζκνύ πνπ ζα δνύκε ζηελ εξρόκελε δηάιεμε. Γηα παξάδεηγκα κπνξεί λα νξίδνληαη επαλαιήςεηο, ζπλζήθεο έιεγρνπ, κεηαβιεηέο, ζπλαξηήζεηο θαη πάξα πνιιά άιια. Απηέο νη δνκέο πξνγξακκαηηζκνύ είλαη κέξνο επεθηάζεσλ ηεο SQL (π.ρ., TSQL, PL/SQL (Oracle)). Σηα πιαίζηα ηνπ εξγαζηεξίνπ ζα δείηε θαη ηελ ρξήζε ησλ ελδηάκεζσλ πηλάθσλ ησλ Triggers: Inserted (γηα Insert), Deleted (γηα Deletes), Inserted+Deleted (γηα Updates). 18-17