correction triggers et procédures stockées

# 2) Destruction de la station
DELETE FROM station WHERE id=2; #impossibe il y a une clé étrangère
# 3) Insertion d'une nouvelle station
INSERT INTO station VALUES (3, "yolo", 350, "Antille", 80000, "Guadeloppe");
# 4) Insertion d'une nouvelle station avec
INSERT INTO station VALUES (4, "swag", 666, "nullepart", 85000, "anywhere");
# 5) implanter par un trigger la règle suivante : si le prix d’une activité baisse, alors le tarif de la station doit augmenter de la différence.
DELIMITER //
CREATE TRIGGER udp_prix AFTER UPDATE
ON activite
FOR EACH ROW
BEGIN
IF NEW.prix < OLD.prix THEN
UPDATE station SET tarif=tarif +(OLD.prix - NEW.prix);
END IF;
END;
//
# 7) ajouter le nb d'activité
ALTER TABLE station ADD nbActivites INT DEFAULT 0;
# 8) trigger qui maintient cette information
DELIMITER //
CREATE TRIGGER maintient AFTER INSERT
ON activite
FOR EACH ROW
BEGIN
UPDATE station SET nbActivites = nbActivites + 1;
END;
//
DELIMITER //
CREATE TRIGGER supp AFTER DELETE
ON activite
FOR EACH ROW
BEGIN
UPDATE station SET nbActivites = nbActivites - 1;
END;
//
# 9) interdire par un tigger l'insertion d'une ligne dans la table séjour si le solde du client est inf au nb de palce * tarif station
DELIMITER //
CREATE TRIGGER interdiction AFTER INSERT
ON sejour
FOR EACH ROW
BEGIN
IF client.solde < (sejour.nbplace * station.tarif) THEN
DELETE FROM sejour WHERE idcli=NEW.idcli;
END IF;
END
//

-------------------------------------------------------------------question 1 procedure
delimiter //
DROP FUNCTION IF EXISTS questionUn //
CREATE FUNCTION questionUn (idc INT) RETURNS VARCHAR(50) DETERMINISTIC

BEGIN
DECLARE param1 VARCHAR(50);
SELECT CONCAT(nom,prenom) INTO param1 FROM client WHERE id=idc;
RETURN param1 ;
END
//

--appel : select questionUn(1)

--------------------------------------------
--exemple procedure
delimiter //
DROP PROCEDURE IF EXISTS questionDeux//
CREATE procedure questionDeux ()

BEGIN

SELECT nom,prenom FROM client ;

END
//

--appel : call questionDeux()

--------------------------------------------------------
--question 2
DROP view IF EXISTS listeActivite;
CREATE view listeActivite as
select activite1(station.nom), station.nom from station;

--------------------------------------------------------------------------
--question 3
delimiter //
DROP PROCEDURE IF EXISTS actualiser//
CREATE procedure actualiser (pourc FLOAT, nomSta VARCHAR(20))

BEGIN
DECLARE param1 INT;

Update station set tarif=tarif*(pourc+1) where nom=nomSta;
select id INTO param1 from station where nom=nomSta;
Update activite set prix=prix*(pourc+1) where idStation=param1;

END
//
-----------------------------------------------------------------
2018-07-03T21:49:51+00:00By |Tags: , |

Leave A Comment