bonjour;
le sujet: écrire une trigger de contrainte sur la table poste permettant de refuser l'ajout d'un nouveau poste si la salle(idsalle) n'est traversée par le segment (idsegment) et si le nombre de poste de la salle dépasse 14.
les tables de ma base de donnée:
table poste:
IDPOSTE NOMPOSTE IDSEGMENT AD TYPEPOSTE IDSALLE NBLOG
p1 Poste 1 130.120.80 01 TX s01 0
p2 Poste 2 130.120.80 02 LINUX s01 2
p3 Poste 3 130.120.80 03 TX s01 0
table salle:
IDSALLE NOMSALLE NBPOSTE IDSEGMENT
s01 Salle 1 3 130.120.80
s02 Salle 2 2 130.120.80
s03 Salle 3 2 130.120.80
s11 Salle 11 2 130.120.81
s21 Salle 21 2 130.120.82
voila le trigger que j'ai créer:
il m'as afficher:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 CREATE OR REPLACE Trig_Ins_Poste BEFORE INSERT ON Poste FOR EACH ROW DECLARE v_nbPos Salle.nbPoste%TYPE; v_idSeg Salle.idSegment%TYPE; BEGIN SELECT nbPoste, idSegment INTO v_nbPos, v_idSeg FROM Salle WHERE idSalle = :NEW.idSalle; IF v_idSeg != :NEW.idSegment THEN DBMS_OUTPUT.PUT_LINE ('La Salle: '||:NEW.idSalle||' n''est pas traversée par le segment:'||:NEW.idSegment||'!'); AND IF v_bPos > 14 THEN DBMS_OUTPUT.PUT_LINE ('La Salle: '||:NEW.idSalle||' a un nombre poste supérieur à 14'); END IF; END IF; END; / SHOW ERRORS ; L;
ERREUR à la ligne 1 :
ORA-00922: option erronée ou absente
SP2-0851: La commande commençant par "v_idSeg Sa..." n'est pas disponible dans iSQL*Plus
SP2-0552: Variable de lien "NEW" non déclarée.
merci.
Partager