/* 1. Trigger ο οποίος κατά την εισαγωγή ενός φυσικού προσώπου ελέγχει αν το email είναι σε σωστή μορφή (<κάτι>@<κάτιάλλο>.). Αν όχι, αποτρέπει την εισαγωγή.*/ DROP TRIGGER IF EXISTS checkEmail; DELIMITER $ CREATE TRIGGER checkEmail BEFORE INSERT ON person FOR EACH ROW BEGIN IF(NEW.email IS NOT NULL AND NEW.email NOT LIKE '%_@%_.%_') THEN INSERT INTO doy(name) VALUES (NULL); END IF; END$ DELIMITER ; /* 2. Trigger ο οποίος κατά την εισαγωγή μιας επιχείρησης σε ένα επιμελητήριο ελέγχει εαν ο τίτλος είναι μοναδικός για τις επιχειρήσεις του επιμελητηρίου στο οποίο ανήκει. Αν δεν είναι μοναδικός, αποτρέπει την εισαγωγή.*/ DROP TRIGGER IF EXISTS checkBusinessTitle; DELIMITER $ CREATE TRIGGER checkBusinessTitle BEFORE INSERT ON belongs FOR EACH ROW BEGIN DECLARE sameTitleCount INT; SET sameTitleCount=0; SELECT COUNT(*) INTO sameTitleCount FROM business INNER JOIN belongs ON belongs.bus_id=business.id WHERE ch_name=NEW.ch_name AND business.title IN ( SELECT title FROM business WHERE id=NEW.bus_id ); IF(sameTitleCount>0) THEN INSERT INTO chamber(name) VALUES (NULL); END IF; END$ DELIMITER ; INSERT INTO business VALUES ('Tzatzadaki Maria', 'Tzatzadakis','1998-08-04 00:00',31202,'Patra',20100,180,NULL,3); INSERT INTO belongs VALUES(31202,'Epimelitirio Axaias'); /* 3. Trigger ο οποίος κατά την εισαγωγή των πληροφοριών ενός ελέγχου από έναν ελεγκτή, ελέγχει εάν η ημερομηνία έναρξης και η ημερομηνία λήξης απέχουν τουλάχιστον μια εβδομάδα. Αν όχι, μεταβάλλει την ημερομηνία λήξης έτσι ώστε να απέχει ακριβώς μια εβδομάδα από την ημερομηνία έναρξης. Σημείωση: Δείτε τις συναρτήσεις για Date και Time της MySQL (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html)*/ DROP TRIGGER IF EXISTS checkAuditDates; DELIMITER $ CREATE TRIGGER checkAuditDates BEFORE INSERT ON auditor_check FOR EACH ROW BEGIN DECLARE currDiff INT; SET currDiff = 0; SET currDiff=DATEDIFF(NEW.startdate,NEW.enddate); IF(currDiff<7) THEN SET NEW.enddate=NEW.startdate + INTERVAL 7 DAY; END IF; END$ DELIMITER ; SELECT * FROM auditor_check; INSERT INTO auditor_check VALUES (31201,'200000333','2012-12-11 00:00','2012-12-13 00:00');