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

Σχετικά έγγραφα
Αρχεία και Βάσεις Δεδομένων

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

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

SQL: Συναρτήσεις Συνάθροισης

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

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

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

Ηλεκτρονικοί Υπολογιστές II

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

Η Γλώσσα SQL. Παράδειγμα ΒΔ (Τράπεζα)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

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

Η Γλώσσα SQL. Μέρος β. Η Γλώσσα SQL Σελίδα 1

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

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

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

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

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Η SQL ως γλώσσα τροποποίησης Δεδομένων

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

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

Τμήμα Διοίκησης Επιχειρήσεων

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Κεφ 4: Προχωρημένες Εντολές SQL

DELETE, UPDATE, INSERT.

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

DELETE, UPDATE, INSERT

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Το σχεσιακό μοντέλο βάσεων δεδομένων

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

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Ηλεκτρονικοί Υπολογιστές II

H Γλώσσα SQL Σχεδιασμός Βάσεων Δεδομένων

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

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

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

ΕΠΛ 342 Βάσεις εδοµένων

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

Θεωρία Κανονικοποίησης

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

Βελτιστοποίηση ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

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

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

Φυσική Σχεδίαση Υλοποίηση βάσης

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

Εισαγωγή στις Βάσεις Δεδομζνων II

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

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

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

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

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

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

Ανοικτά Ακαδημαϊκά Μαθήματα

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)


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

Εξεταστική Περίοδος Ιουνίου 2004

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

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

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

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

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

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

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

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

Ηλεκτρονικοί Υπολογιστές II

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

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

Εισαγωγή στην πληροφορική

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

Το Σχεσιακό μοντέλο και η γλώσσα SQL

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

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

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

Τεχνολογία Πολιτισμικού Λογισμικού

1.1 Ανάλυση απαιτήσεων του Υποσυστήματος Μητρώου Εταιρειών Μ.Μ.Ε Ανάλυση απαιτήσεων του Υποσυστήματος Ελέγχου τήρησης μη

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

Σχεδίαση Σχεσιακών ΒΔ

Βάσεις Περιβαλλοντικών Δεδομένων

SQL Data Definition. REFERENCES (foreign key), CHECKκαι PRIMARY KEY (key)

Transcript:

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition

Περιορισμοί πεδίου τιμών Περιορισμοί ακεραιότητας διασφαλίζουν από κατά λάθος καταστροφή της ΒΔ Διαβεβαιώνουν ότι μη εξουσιοδοτημένες αλλαγές στη ΒΔ δεν θα καταλήξουν σε απώλεια συνέπειας των δεδομένων. Περιορισμοί πεδίου τιμών η στοιχειώδης μορφή ακεραιότητας περιορισμού. Ελέγχουν τιμές που εισάγονται στη ΒΔ και ελέγχουν ερωτήσεις για να επιβεβαιώσουν ότι οι συγκρίσεις έχουν νόημα. Νέα πεδία τιμών μπορούν να δημιουργηθούν από υπάρχοντες τύπους δεδομένων Π.χ. create domain Dollars numeric(12, 2) create domain Pounds numeric(12,2) Δεν μπορούμε να αναθέσουμε (ή να συγκρίνουμε) μία τιμή τύπου Dollars σε τιμή τύπου Pounds. Ωστόσο, μπορούμε να μετατρέψουμε ένα τύπο ως εξής (cast r.a as Pounds)

Περιορισμοί πεδίου τιμών (2) Η έκφραση check σε SQL-92 επιτρέπει πεδία τιμών να περιοριστούν: Χρήση της έκφρασης check για να επιβεβαιώσουμε ότι το πεδίο τιμών hourly-wage επιτρέπει μόνο τιμές μεγαλύτερες από μία συγκεκριμένη τιμή. create domain hourly-wage numeric(5,2) constraint value-test check(value > = 4.00) Το πεδίο τιμών έχει το περιορισμό που επιβεβαιώνει ότι το hourly-wage >= 4.00 Μπορούμε να έχουμε σύνθετες συνθήκες στον έλεγχο πεδίου τιμών create domain AccountType char(10) constraint account-type-test check (value in ( Checking, Saving )) check (branch-name in (select branch-name from branch)) Η έκφραση constraint value-test είναι προαιρετική; Χρήσιμη για να δείξουμε πιο constraint παραβίασε κάποια ενημέρωση

Ακεραιότητα αναφορών Επιβεβαιώνει ότι μία τιμή που εμφανίζεται σε μία σχέση για ένα δεδομένο σύνολο χαρακτηριστικών επίσης εμφανίζεται για ένα συγκεκριμένο σύνολο γνωρισμάτων σε μία άλλη σχέση. Παράδειγμα: If Athens is a branch name appearing in one of the tuples in the account relation, Τυπικός ορισμός then there exists a tuple in the branch relation for branch Athens. Έστω r 1 (R 1 ) και r 2 (R 2 ) είναι σχέσεις με πρωτεύοντα κλειδιά K 1 και K 2 αντίστοιχα. Το υποσύνολο του R 2 είναι ξένο κλειδί (foreign key) που αναφέρει το K 1 στη σχέση r 1, εάν για κάθε πλειάδα t 2 στην r 2 πρέπει να υπάρχει μία πλειάδα t 1 στην r 1 τέτοια ώστε t 1 [K 1 ] = t 2 []. Ο περιορισμός αναφορικής ακεραιότητας καλείται επίσης υποσύνολο εξάρτησης τέτοιο ώστε να μπορεί να γραφεί ως (r 2 ) K1 (r 1 )

Έλεγχος ακεραιότητας αναφορών στη τροποποίηση Βάσης Δεδομένων Οι ακόλουθοι έλεγχοι πρέπει να γίνουν για να διατηρήσουν τους ακόλουθους περιορισμούς αναφορικής ακεραιότητας: (r 2 ) K (r 1 ) Insert. Εάν η πλειάδα t 2 εισαχθεί στο r 2, το σύστημα πρέπει να επιβεβαιώσει ότι υπάρχει μία πλειάδα t 1 στο r 1 τέτοια ώστε t 1 [K] = t 2 []. Δηλαδή t 2 [] K (r 1 ) Delete. Εάν η πλειάδα, t 1 διαγραφεί από r 1, το σύστημα πρέπει να υπολογίσει το σύνολο των πλειάδων στην r 2 που αναφέρουν το t 1 : Εάν το σύνολο δεν είναι κενό = t1[k] (r 2 ) Είτε η εντολή delete απορρίπτεται σαν λάθος, ή Οι εγγραφές που αναφέρουν το t 1 πρέπει να διαγραφούν από μόνες τους (διαδοχικές διαγραφές είναι δυνατές).

Τροποποίηση ΒΔ (2) Update. Δύο περιπτώσεις: Εάν μία εγγραφή t 2 ενημερώνεται στη σχέση r 2 και η ενημέρωση τροποποιεί τιμές για το ξένο κλειδί, τότε γίνεται ένας έλεγχος όμοιος με την περίπτωση της εισαγωγής: Έστω t 2 δηλώνει μία νέα τιμή της εγγραφής t 2. Το σύστημα πρέπει να επιβεβαιώσει ότι t 2 [] K (r 1 ) Εάν μία εγγραφή t 1 ενημερωθεί στη σχέση r 1, και η ενημέρωση τροποποιεί τις τιμές του πρωτεύοντος κλειδιού (K), τότε γίνεται ένας έλεγχος παρόμοιος με την περίπτωση της διαγραφής: 1. Το σύστημα πρέπει να υπολογίζει το σύνολο = t 1[K] (r 2) χρησιμοποιώντας τη παλιά τιμή t 1 (the value before the update is applied). 2. Εάν το σύνολο δεν είναι κενό 1. Η ενημέρωση μπορεί να απορριφθεί σαν λάθος, ή 2. Η ενημέρωση μπορεί διαδοχικά να γίνει στις εγγραφές συνόλου, ή 3. Οι εγγραφές του συνόλου μπορεί να διαγραφούν

Ακεραιότητα αναφορών σε SQL Πρωτεύοντα και ξένα κλειδιά μπορούν να οριστούν σαν μέρος της SQL εντολής create table : primary key ορίζει μία λίστα από γνωρίσματα που αποτελούν το πρωτεύον κλειδί. unique key : λίστα γνωρισμάτων που συνιστούν ένα υποψήφιο κλειδί. foreign key : λίστα γνωρισμάτων που συνιστούν το ξένο κλειδί και το όνομα της σχέσης που αφορά το ξένο κλειδί. By default, ένα ξένο κλειδί αφορά στο πρωτεύον κλειδί του αναφερόμενου πίνακα foreign key (account-number) references account Σύντομη μορφή για να καθορίσουμε μία απλή στήλη σαν ξένο κλειδί account-number char (10) references account Οι στήλες αναφοράς στον αναφερόμενο πίνακα μπορούν να οριστούν άμεσα Αλλά πρέπει να δηλωθούν σαν πρωτεύοντα/υποψήφια κλειδιά foreign key (account-number) references account(account-number)

Ακεραιότητα αναφορών σε SQL Παράδειγμα (1) create table customer (customer-name char(20), customer-street char(30), customer-city char(30), primary key (customer-name)) create table branch (branch-name char(15), branch-city char(30), assets integer, primary key (branch-name))

Ακεραιότητα αναφορών σε SQL Παράδειγμα (2) create table account (account-number char(10), branch-name char(15), balance integer, primary key (account-number), foreign key (branch-name) references branch) create table depositor (customer-name char(20), account-number char(10), primary key (customer-name, account-number), foreign key (account-number) references account, foreign key (customer-name) references customer)

Cascading Actions in SQL create table account... foreign key(branch-name) references branch on delete cascade on update cascade... ) Εξαιτίας της δήλωσης on delete cascade, Εάν μία διαγραφή πλειάδας στο branch καταλήξει σε παραβίαση του περιορισμού ακεραιότητα αναφοράς, η διαγραφή μεταβιβάζεται διαδοχικά στη σχέση account, διαγράφοντας την εγγραφή που αναφέρεται στο υποκατάστημα που διαγράφηκε. Cascading updates.

Cascading Actions in SQL (2) Εάν υπάρχει ακολουθία από εξαρτήσεις ξένων κλειδιών διαμέσου πολλαπλών σχέσεων, με το ορισμό on delete cascade για κάθε εξάρτηση, μία διαγραφή ή ενημέρωση στο ένα άκρο της αλυσίδας μπορεί να διαδοθεί σε όλη την αλυσίδα. Εάν μία διαδοχική ενημέρωση ή διαγραφή προκαλέσει παραβίαση περιορισμών που δεν μπορούν να διαχειριστούν από μία περαιτέρω διαδοχική λειτουργία, το σύστημα αναιρεί τη δοσοληψία. Σαν αποτέλεσμα, όλες οι αλλαγές που προκαλούνται από τη δοσοληψία και οι διαδοχικές της ενέργειες αναιρούνται. Η ακεραιότητα αναφορών ελέγχεται μόνο στο τέλος της δοσοληψίας Ενδιάμεσα βήματα επιτρέπονται να παραβιάσουν ακεραιότητας αναφοράς δεδομένου ότι μεταγενέστερα βήματα θα απομακρύνουν τη παραβίαση Διαφορετικά είναι αδύνατο να δημιουργήσουμε κάποιες καταστάσεις ΒΔ, π.χ. εισαγωγή δύο πλειάδων των οποίων τα ξένα κλειδιά δείχνουν το ένα το άλλο Π.χ. spouse attribute of relation married_person(name, address, spouse)

Ακεραιότητα αναφοράς σε SQL (2) Εναλλακτικά του cascading: on delete set null on delete set default Null τιμές στα γνωρίσματα του ξένου κλειδιού περιπλέκουν τη σημασιολογία ακεραιότητας αναφοράς στην SQL και είναι καλύτερα να αποφεύγονται χρησιμοποιώντας not null if any attribute of a foreign key is null, the tuple is defined to satisfy the foreign key constraint!

Triggers Ένας trigger είναι μία εντολή που εκτελείται αυτόματα από το σύστημα σαν αποτέλεσμα τροποποίησης της ΒΔ. Για να σχεδιάσουμε ένα μηχανισμό trigger, πρέπει να: Καθορίσουμε τις συνθήκες υπό τις οποίες εκτελείται ο trigger. Καθορίσουμε τις ενέργειες που λαμβάνονται όταν εκτελείται ο trigger. Triggers εισάγονται στο SQL στην SQL:1999, αλλά υποστηρίζονταν ακόμα νωρίτερα από τις περισσότερες ΒΔ χρησιμοποιώντας non-standard σύνταξη.

Trigger Παράδειγμα Υποθέτουμε ότι αντί να επιτρέπουμε λογαριασμούς με αρνητικά υπόλοιπα, η τράπεζα διαχειρίζεται overdrafts με το να Θέτει το υπόλοιπο λογαριασμού σε 0 Δημιουργεί ένα δάνειο στο ποσό του overdraft Δίνοντας στο δάνειο ένα αριθμό δανείου όμοιο με το αριθμό του overdrawn account Η συνθήκη εκτέλεσης του trigger είναι μία ενημέρωση της σχέσης account που καταλήγει σε μία αρνητική τιμή balance.

Trigger Example in SQL:1999 create trigger overdraft-trigger after update on account referencing new row as nrow for each row when nrow.balance < 0 begin atomic insert into borrower (select customer-name, account-number from depositor where nrow.account-number = depositor.account-number); insert into loan values (nrow.account-number, nrow.branch-name, nrow.balance); update account set balance = 0 where account.account-number = nrow.account-number end

Triggering Events and Actions in SQL Ένα γεγονός που προκαλεί την ενεργοποίηση trigger μπορεί να είναι insert, delete or update Triggers σε update μπορούν να περιοριστούν σε συγκεκριμένα γνωρίσματα E.g. create trigger overdraft-trigger after update of balance on account Τιμές γνωρισμάτων πριν και μετά την εκτέλεση ενός update μπορούν να αναφερθούν referencing old row as : for deletes and updates referencing new row as : for inserts and updates Triggers μπορούν να ενεργοποιηθούν πριν ένα συμβάν, το οποίο μπορεί να εξυπηρετήσει ως extra constraints. E.g. convert blanks to null. create trigger setnull-trigger before update on r referencing new row as nrow for each row when nrow.phone-number = set nrow.phone-number = null