© Éditions Eyrolles
205
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
-- Ajout d’un PNT
CREATE PROCEDURE ajout_PNT(num NUMBER, nom VARCHAR,
brevet VARCHAR, licence DATE) IS
BEGIN
INSERT INTO Personnel VALUES (num,nom);
INSERT INTO PNT VALUES (num,brevet,licence);
END;
-- Ajout d’un PNC
CREATE PROCEDURE ajout_PNC(num NUMBER, nom VARCHAR, ind NUMBER,
prim NUMBER) IS
BEGIN
INSERT INTO Personnel VALUES (num,nom);
INSERT INTO PNC VALUES (num,ind,prim);
END;
Les procédures suivantes réalisent respectivement la suppression d’un personnel PNT et d’un
personnel de type PNC. On aurait pu également gérer la suppression à l’aide de déclencheurs
sur les trois tables.
-- Suppression d’un PNT
CREATE PROCEDURE enleve_PNT(num NUMBER) IS
BEGIN
DELETE FROM PNT
WHERE numPers=num;
DELETE FROM Personnel WHERE numPers=num;
END;
-- Suppression d’un PNC
CREATE PROCEDURE enleve_PNC(num NUMBER) IS
BEGIN
DELETE FROM PNC
WHERE numPers=num;
DELETE FROM Personnel WHERE numPers=num;
END;
La modification d’un numéro de personnel au niveau de la table Personnel doit être répercutée
dans la table PNT ou PNC. Pour réaliser ces répercussions, nous programmons le déclencheur
suivant.
-- Répercussion de Personnel vers PNT ou PNC
CREATE TRIGGER Tri_B_U_Personnel
BEFORE UPDATE OF numPers ON Personnel FOR EACH ROW
BEGIN
UPDATE PNC SET numPers = :NEW.numPers
WHERE numPers = :OLD.numPers;
UPDATE PNT SET numPers = :NEW.numPers
WHERE numPers = :OLD.numPers;
END;
205
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
-- Ajout d’un PNT
CREATE PROCEDURE ajout_PNT(num NUMBER, nom VARCHAR,
brevet VARCHAR, licence DATE) IS
BEGIN
INSERT INTO Personnel VALUES (num,nom);
INSERT INTO PNT VALUES (num,brevet,licence);
END;
-- Ajout d’un PNC
CREATE PROCEDURE ajout_PNC(num NUMBER, nom VARCHAR, ind NUMBER,
prim NUMBER) IS
BEGIN
INSERT INTO Personnel VALUES (num,nom);
INSERT INTO PNC VALUES (num,ind,prim);
END;
Les procédures suivantes réalisent respectivement la suppression d’un personnel PNT et d’un
personnel de type PNC. On aurait pu également gérer la suppression à l’aide de déclencheurs
sur les trois tables.
-- Suppression d’un PNT
CREATE PROCEDURE enleve_PNT(num NUMBER) IS
BEGIN
DELETE FROM PNT
WHERE numPers=num;
DELETE FROM Personnel WHERE numPers=num;
END;
-- Suppression d’un PNC
CREATE PROCEDURE enleve_PNC(num NUMBER) IS
BEGIN
DELETE FROM PNC
WHERE numPers=num;
DELETE FROM Personnel WHERE numPers=num;
END;
La modification d’un numéro de personnel au niveau de la table Personnel doit être répercutée
dans la table PNT ou PNC. Pour réaliser ces répercussions, nous programmons le déclencheur
suivant.
-- Répercussion de Personnel vers PNT ou PNC
CREATE TRIGGER Tri_B_U_Personnel
BEFORE UPDATE OF numPers ON Personnel FOR EACH ROW
BEGIN
UPDATE PNC SET numPers = :NEW.numPers
WHERE numPers = :OLD.numPers;
UPDATE PNT SET numPers = :NEW.numPers
WHERE numPers = :OLD.numPers;
END;
