Vous travaillerez sur les tables emp et dept
- Ecrire un trigger qui refuse la suppression d'un département pour lequel il existe des employés
- Tester le trigger avec un départ. contenant des employés puis créer un nouveau départ. et tester sa suppression
create trigger supdept
before delete on dept
for each row
declare
nb int ;
begin
select count(*) into nb from emp
where deptno = old.dept_;
if nb>0 then
signal sqlstate "22100" set message_text = "Erreur-Il existe des employés dans ce service";
end if;
end;
- Ajouter une colonne salmax dans la table dept. Cette colonne contiendra le salaire maximum pouvant être attribué à un employé du département.
- Alimenter les salaires maxi ainsi : 10000 pour le département 10, 20000 pour le département 20 …
- Ecrire un trigger qui refuse l'ajout d'un employé si le salaire proposé est supérieur au salaire maximum accepté pour le département.
- Tester le trigger avec un salaire inférieur ou égal au salaire maxi puis avec un salaire supérieur au salaire maxi.
create trigger ajoutemp
before insert on emp
nb int;
sal float;
select salmax into sal from dept where deptno = new.deptno;
if new.sal > sal then
signal sqlstate "22101" set message_text = "Erreur-Le salaire est trop élevé pour ce service" ;
- Effectuer le même contrôle que pour la question 2 mais cette fois le contrôle devra être effectué lors de la modification du salaire.
before update on emp
Remarque : on peut écrire un seul trigger pour les questions 2 et 3. Bien sûr ce trigger aurait 2 événements (insert et update of sal)
Générée avec chmProcessor