Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Dimitri Nicolas
AI23 - Projet
Commits
b700ccf8
Commit
b700ccf8
authored
Jun 20, 2021
by
Marine Marsal
Browse files
Update CREATE.sql
parent
5eb3b5ab
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/database/CREATE.sql
View file @
b700ccf8
...
...
@@ -162,23 +162,23 @@ CREATE TABLE IF NOT EXISTS ExemplairePret (
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
/* ****** TRIGGERS ****** */
CREATE
OR
REPLACE
FUNCTION
check_exclusivite_realisateur
()
RETURNS
trigger
AS
$$
DECLARE
var
INTEGER
;
BEGIN
DECLARE var INTEGER;
SELECT acteur INTO var FROM Acteur WHERE acteur = NEW.realisateur AND film = NEW.film;
RAISE Erreur_exclu;
SELECT
*
INTO
var
FROM
Acteur
a
WHERE
a
.
acteur
=
NEW
.
realisateur
AND
film
=
NEW
.
film
;
RAISE
EXCEPTION
'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'
)
;
WHEN
NO_DATA_FOUND
THEN
NULL
;
WHEN
OTHERS
THEN
RAISE
EXCEPTION
'Erreur : ce contributeur existe déjà dans la table Auteur'
;
RETURN
NEW
;
END
;
$$
...
...
@@ -191,15 +191,16 @@ EXECUTE PROCEDURE check_exclusivite_realisateur();
CREATE
OR
REPLACE
FUNCTION
check_exclusivite_acteur
()
RETURNS
trigger
AS
$$
DECLARE
var
INTEGER
;
BEGIN
DECLARE var INTEGER;
SELECT
realisateur
INTO
var
FROM
Realisateur
WHERE
realisateur
=
NEW
.
auteur
AND
film
=
NEW
.
film
;
RAISE Erreur_exclu;
RAISE
EXCEPTION
'
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'
)
;
WHEN
NO_DATA_FOUND
THEN
NULL
;
WHEN
OTHERS
THEN
RAISE
EXCEPTION
'Erreur : ce contributeur existe déjà dans la table Realisateur'
;
RETURN
NEW
;
END
;
$$
...
...
@@ -212,15 +213,16 @@ EXECUTE PROCEDURE check_exclusivite_acteur();
CREATE
OR
REPLACE
FUNCTION
check_exclusivite_compositeur
()
RETURNS
trigger
AS
$$
DECLARE
var
INTEGER
;
BEGIN
DECLARE var INTEGER;
SELECT
interprete
INTO
var
FROM
Interprete
WHERE
interprete
=
NEW
.
compositeur
AND
oeuvreMusicale
=
NEW
.
oeuvreMusicale
;
RAISE Erreur_exclu;
RAISE
EXCEPTION
'
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'
)
;
WHEN
NO_DATA_FOUND
THEN
NULL
;
WHEN
OTHERS
THEN
RAISE
EXCEPTION
'Erreur : ce contributeur existe déjà dans la table Interprete'
;
RETURN
NEW
;
END
;
$$
...
...
@@ -233,15 +235,17 @@ EXECUTE PROCEDURE check_exclusivite_compositeur();
CREATE
OR
REPLACE
FUNCTION
check_exclusivite_interprete
()
RETURNS
trigger
AS
$$
DECLARE
var
INTEGER
;
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');
RAISE
EXCEPTION
'Erreur_exclu'
;
EXCEPTION
WHEN
NO_DATA_FOUND
THEN
NULL
;
WHEN
OTHERS
THEN
RAISE
EXCEPTION
'Erreur : ce contributeur existe déjà dans la table Compositeur'
;
RETURN
NEW
;
END
;
$$
LANGUAGE
'plpgsql'
;
...
...
@@ -249,4 +253,3 @@ 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
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment