Commit 5eb3b5ab authored by Dimitri Nicolas's avatar Dimitri Nicolas
Browse files

Triggers added, to debug

parent e4583db8
......@@ -161,3 +161,92 @@ CREATE TABLE IF NOT EXISTS ExemplairePret (
FOREIGN KEY (pret) REFERENCES Pret(pretID),
PRIMARY KEY (ref, pret)
);
/* ****** TRIGGERS ******
-- REPRESENTATION DES ASSOCIATIONS EXCLUSIVES, UN CONTRIBUTEUR NE PEUT AVOIR QU'UN SEUL RÔLE POUR CHAQUE RESSOURCE
-- PAS FONCTIONNEL, A DEBUG
CREATE OR REPLACE FUNCTION check_exclusivite_realisateur()
RETURNS trigger AS
$$
BEGIN
DECLARE var INTEGER;
SELECT acteur INTO var FROM Acteur WHERE acteur = NEW.realisateur AND film = NEW.film;
RAISE Erreur_exclu;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN Erreur_exclu THEN
RAISE_APPLICATION_ERROR(-20001, 'Erreur : ce contributeur existe déjà dans la table Auteur');
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER T_EXCUSIVITE_REALISATEUR BEFORE INSERT ON Realisateur
FOR EACH ROW
EXECUTE PROCEDURE check_exclusivite_realisateur();
CREATE OR REPLACE FUNCTION check_exclusivite_acteur()
RETURNS trigger AS
$$
BEGIN
DECLARE var INTEGER;
SELECT realisateur INTO var FROM Realisateur WHERE realisateur = NEW.auteur AND film = NEW.film;
RAISE Erreur_exclu;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN Erreur_exclu THEN
RAISE_APPLICATION_ERROR(-20001, 'Erreur : ce contributeur existe déjà dans la table Realisateur');
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER T_EXCUSIVITE_ACTEUR BEFORE INSERT OR UPDATE ON Acteur
FOR EACH ROW
EXECUTE PROCEDURE check_exclusivite_acteur();
CREATE OR REPLACE FUNCTION check_exclusivite_compositeur()
RETURNS trigger AS
$$
BEGIN
DECLARE var INTEGER;
SELECT interprete INTO var FROM Interprete WHERE interprete = NEW.compositeur AND oeuvreMusicale = NEW.oeuvreMusicale;
RAISE Erreur_exclu;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN Erreur_exclu THEN
RAISE_APPLICATION_ERROR(-20001, 'Erreur : ce contributeur existe déjà dans la table Interprete');
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER T_EXCUSIVITE_COMPOSITEUR BEFORE INSERT OR UPDATE ON Compositeur
FOR EACH ROW
EXECUTE PROCEDURE check_exclusivite_compositeur();
CREATE OR REPLACE FUNCTION check_exclusivite_interprete()
RETURNS trigger AS
$$
BEGIN
DECLARE var INTEGER;
SELECT compositeur INTO var FROM Compositeur WHERE compositeur = NEW.interprete AND oeuvreMusicale = NEW.oeuvreMusicale;
RAISE Erreur_exclu;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN Erreur_exclu THEN
RAISE_APPLICATION_ERROR(-20001, 'Erreur : ce contributeur existe déjà dans la table Compositeur');
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER T_EXCUSIVITE_INTERPRETE BEFORE INSERT OR UPDATE ON Interprete
FOR EACH ROW
EXECUTE PROCEDURE check_exclusivite_interprete();
*/
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment