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

Σχετικά έγγραφα
ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

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

ΑΠΟΘΗΚΕΥΜΕΝΕΣ ΔΙΑΔΙΚΑΣΙΕΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

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

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

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

Διαχείριση Πολιτισμικών Δεδομένων

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

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

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

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

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

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

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

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

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

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

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

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

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

Προσοµοίωση τροχιάς σε Oracle Spatial 8i DBMS


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

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

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

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

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

Έχουµε την βάση της σχολής που αποτελείται από τους παρακάτω πίνακες.

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

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

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

Ανάκτηση Δεδομένων (Information Retrieval)

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

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

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

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

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

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

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

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

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

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

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

ALERTS ή EDA (Event Driven Actions)

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

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

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

databases linux - terminal (linux / windows terminal)

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

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

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

Διαχείριση Πολιτισμικών Δεδομένων

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

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

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

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

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

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

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

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

Transcript:

ΕΝΑΥΣΜΑΤΑΣΤΗΝPOSTGRES ΓΕΝΙΚΑ Μία διαδικασία την οποία δηλώνει ο Διαχειριστής της Βάσης Δεδομένων και η οποία ενεργοποιείται αυτόματα από το ΣΔΒΔ κάθε φορά που συμβαίνουν μεταβολές ορισμένου τύπουσταδεδομέναονομάζεταιέναυσμα(trigger). Μία Βάση Δεδομένων η δήλωση της οποίας συνδυάζεται με δηλώσεις εναυσμάτων ονομάζεταιενεργήβάσηδεδομένων. Στηνπεριγραφήενόςεναύσματοςυπάρχουντρίαδιακριτάμέρη: Γεγονός:μίαμεταβολήστηβάσηδεδομένωνηοποίαενεργοποιείτοέναυσμα. Συνθήκη: ένα αίτημα ή ένας έλεγχος που εκτελείται με την ενεργοποίηση του εναύσματος. Ενέργεια: μία διαδικασία η οποία εκτελείται όταν ισχύει η συνθήκη και ενεργοποιείταιτοέναυσμα. Το όνομα ενός εναύσματος στο σχήμα της βάσης θα πρέπει να είναι μοναδικό. Να μην υπάρχειάλλοέναυσμαμετοίδιοόνομα. Τρίαείναιταείδητωνεναυσμάτων: DMLφράσεις(DELETE,INSERT,UPDATE) DDLφράσεις(CREATE,ALTER,DROP) ΛειτουργίεςΒάσηςΔεδομένων(LOGON,LOGOFF) Ένα έναυσμα μπορεί να εκτελείται πριν ή μετά την ολοκλήρωση της ενέργειας που το προκάλεσε. Ανάλογα με την περίπτωση θα πρέπει να δηλωθεί στο έναυσμα αν θα εκτελεστείπριν(before)ήμετά(after): Before,εκτελείταιπρινσυμβούνμεταβολέςστηβάση. After,εκτελείταιαφούσυμβούνμεταβολέςστηβάση. Ότανσυντάσσεταιέναέναυσμαθαπρέπειναακολουθηθούνοιπαρακάτωκανόνες: 1. Δενπρέπειναπεριλαμβάνειδυναμικέςπαραμέτρους. 2. Δεν πρέπει να εκτελεί εντολές create, alter, ή drop για τον πίνακα που είναι ορισμένοτοέναυσμα. 1

3. Δεν πρέπει να δημιουργεί ή να αφαιρεί ένα index για τον πίνακα που είναι ορισμένοτοέναυσμα. 4. Δεν πρέπει να δημιουργεί ή να αφαιρεί ένα έναυσμα για τον πίνακα που είναι ορισμένοτοέναυσμα. ΤΡΟΠΟΣΥΛΟΠΟΙΗΣΗΣ Ησύνταξηενόςεναύσματοςστηνpostgresqlαποτελείταιαπόδύοτμήματα,(α)τηδήλωση της συνάρτησης τύπου trigger που θα υλοποιήσει την ενέργεια του trigger και (β) τον trigger. ΔήλωσηΣυνάρτησης CREATE FUNCTION όνοµα_συνάρτησης () RETURNS trigger AS Begin Σώµα end; LANGUAGE 'plpgsql' ΔήλωσηΕναύσματος CREATE TRIGGER όνοµα_εναύσµατος Before after insert delete update on όνοµα_πίνακα For each row execute procedure όνοµα_συνάρτησης (); ΧΑΡΑΚΤΗΡΙΣΤΙΚΑΕΝΟΣΕΝΑΥΣΜΑΤΟΣ ΜίασυνάρτησηεναύσματοςδημιουργείταιμετηνεντολήCREATEFUNCTION,δηλώνοντας την ως συνάρτηση χωρίς παραμέτρους που επιστρέφει τύπο έναυσμα. Πρέπει να επιστρέφει NULL ή μία εγγραφή/γραμμή της δομής του πίνακα για τον οποίο ενεργοποιήθηκεοtrigger.οιπαράμετροισεμίασυνάρτησηεναύσματος«περνάνε»μετις ειδικέςμεταβλητέςtg_argv.συνοπτικά,οισημαντικότερεςειδικέςμεταβλητέςείναι: NEWtypeRECORD,αυτήημεταβλητήκρατάειτηνέαεγγραφήπουπροκύπτειαπό εντολήinsert/updateσεrow επιπέδουtriggers.ητιμήτηςμεταβλητήςείναιnull γιατηνεντολήdelete. OLD type RECORD, αυτή η μεταβλητή κρατάει τη παλιά γραμμή πριν αλλάξει από μίαεντολήupdate/deleteσεrow επιπέδουtriggers.ητιμήτηςμεταβλητήςείναι NULLγιατηνεντολήINSERT. TG_NAME, αυτή η μεταβλητή περιέχει το όνομα του trigger που μόλις ενεργοποιήθηκε. 2

TG_WHEN,περιέχειτηντιμήBEFOREήAFTERόπωςέχειδηλωθείστονtrigger. TG_LEVEL,περιέχειτηντιμήROWorSTATEMENTόπωςέχειδηλωθείστονtrigger. TG_OP,περιέχειτηντιμήINSERT,UPDATE,DELETE,όπωςέχειδηλωθείστονtrigger. TG_RELID,περιέχειτοobjectIDτουπίνακαγιατονοποίοενεργοποιήθηκεοtrigger. TG_TABLE_NAME,περιέχειτοόνοματουπίνακαγιατονοποίοενεργοποιήθηκεο trigger. TG_TABLE_SCHEMA,περιέχειτοόνοματουσχήματοςπουανήκειοπίνακαςγιατον οποίοενεργοποιήθηκεοtrigger. Παράδειγμα1 ο Να δημιουργηθεί έναυσμα το οποίο θα αυξάνει το rating ενός ναυτικού όταν πραγματοποιείπερισσότερεςαπό5κρατήσειςτηνίδιαμέρα. CREATE FUNCTION upgraderating() RETURNS TRIGGER AS DECLARE sid_per_day INTEGER; BEGIN SELECT COUNT(*) INTO sid_per_day -- δήλωση µεταβλητής -- κατέβασµα το αποτέλεσµα -- στη µεταβλητή FROM Reserves WHERE sid = NEW.sid and -- εξασφαλίζει ότι ο έλεγχος γίνεται day1 = NEW.day1; -- µε βάση τα δεδοµένα της νέας εγγραφής IF sid_per_day > 5 THEN UPDATE Sailors SET rating=rating +1 WHERE sid = NEW.sid; RETURN NULL; END; LANGUAGE plpgsql; CREATE TRIGGER upgraderatingtrigger AFTER INSERT ON Reserves FOR EACH ROW EXECUTE PROCEDURE upgraderating(); Εκτελέστε τις κατάλληλες insert εντολές ώστε στον πίνακα reserves να καταχωρηθεί κωδικόςναυτικούναέχεικάνειτηνίδιαμέραπερισσότερεςαπό5κρατήσειςπροφανώςσε περισσότερεςαπό5διαφορετικέςβάρκες.ανχρειαστείκαταχωρίστεκαινέεςβάρκες. 3

Παράδειγμα2 ο Να δημιουργηθεί έναυσμα το οποίο εξασφαλίζει την υποχρεωτική εισαγωγή των πεδίων empid,empnameκαιsalaryτουπίνακαemp(ηδομήτουπίνακαφαίνεταιπαρακάτω),την εισαγωγή θετικής τιμή στο πεδίο salary και την εισαγωγή της στιγμής καταχώρησης μιας νέας εγγραφής στο πεδίο last_date και το όνομα του χρήστη που έκανε την καταχώρηση στοπεδίοlast_user. CREATE TABLE emp ( empid integer NOT NULL primary key, empname varchar(20), salary integer, last_date timestamp, last_user varchar(20) ); CREATE FUNCTION emp_stamp () RETURNS TRIGGER AS BEGIN -- Έλεγξε αν εισάγονται τιµές για τα πεδία empname και salary IF NEW.empname ISNULL THEN -- µε τη RAISE EXCEPTION εµφανίζεται το σφάλµα. RAISE EXCEPTION 'empname cannot be NULL value'; IF NEW.salary ISNULL THEN RAISE EXCEPTION '% cannot have NULL salary', NEW.empname; -- Έλεγξε αν δίνεται αρνητικός µισθός IF NEW.salary < 0 THEN RAISE EXCEPTION '% cannot have a negative salary', NEW.empname; -- Καταχώρησε ποιος έκανε την αλλαγή στον µισθό NEW.last_date := ''now''; NEW.last_user := current_user; RETURN NEW; END; LANGUAGE 'plpgsql'; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); Δοκιμάζουμετοέναυσμαμετηνεκτέλεσητωνπαρακάτωεντολών. insert into emp(empid, salary) values (1, 100); ERROR: empname cannot be NULL value SQL state: P0001 insert into emp(empid, empname) values (2, 'George'); ERROR: George cannot have NULL salary SQL state: P0001 insert into emp(empid, empname,salary) values (3, 'George', -100); ERROR: George cannot have a negative salary SQL state: P0001 4

insert into emp(empid, empname,salary) values (4, 'George', 100); Query returned successfully: 1 rows affected, 0 ms execution time. Παράδειγμα3 ο ΝαδημιουργηθείέναυσματοοποίοθακαταχωρείσεέναπίνακαLogFileόλεςτιςενέργειες INSERT/UPDATE/DELETEδεδομένωνπουγίνονταισεμίαβάσηδεδομένων.. -- Βοηθητικός πίνακας emp για παρακολούθηση των ενεργειών που -- γίνονται σε αυτόν CREATE TABLE emp2 ( empname varchar(20) NOT NULL primary key, salary integer ); -- Ο πίνακας Log File CREATE TABLE emp_audit ( operation char(1) NOT NULL, stamp timestamp NOT NULL primary key, userid varchar(20) NOT NULL, empname varchar(20) NOT NULL, salary integer ); -- H συνάρτηση εναύσµατος CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS BEGIN IF (TG_OP = 'DELETE') THEN -- Καταχωρείται D για Delete, η στιγµή της διαγραφή, ο χρήστης -- και οι τιµές των δύο στηλών της εγγραφής του emp πριν διαγραφούν INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; RETURN OLD; ELSIF (TG_OP = 'UPDATE') THEN -- Καταχωρείται U για Update, η στιγµή της µεταβολής, ο χρήστης -- και οι νέες τιµές των δύο στηλών της εγγραφής του emp µετά -- την µεταβολή. INSERT INTO emp_audit SELECT 'U', now(), user, NEW.*; RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN -- Καταχωρείται I για Insert, η στιγµή της εισαγωγής, ο χρήστης -- και οι τιµές των δύο στηλών της νέας εγγραφής του emp. INSERT INTO emp_audit SELECT 'I', now(), user, NEW.*; RETURN NEW; RETURN NULL; END; LANGUAGE plpgsql; -- Το έναυσµα CREATE TRIGGER emp_audit AFTER INSERT OR UPDATE OR DELETE ON emp2 FOR EACH ROW EXECUTE PROCEDURE process_emp_audit(); 5

Μπορείτεναδοκιμάσετετοέναυσμαμετιςπαρακάτωεντολές. 1. insert into emp2(empname, salary) values ('John', 10000); 2. insert into emp2(empname, salary) values ('Maria', 10000); 3. delete from emp2 where empname = Maria'; 4. update emp2 set salary = salary * 1.1 where empname = 'John'; Περισσότεραμπορείτεναβρείτεστο http://www.postgresql.org/docs/9.1/static/sql createtrigger.html 6