J'ai une question a propos de la structure d'une table.
Pour l'instant j'ai ça :
Le problème c'est que suite à une évolution du besoin j'ai ma relation 1N,11 entre Ilot et Alerte qui se transforme à 1N,1N Mais seulement pour 1 Secteur particulier de TypeAlerte
Je voulais savoir si il y a moyen de changer la relation uniquement pour le TypeAlerte en question ?
Sinon je part sur ça :
Je vous remercie pour vos réponses.
EDIT : Pour résumer :
Pour idTypeAlerte = 1 ma relation 1N,11 entre Ilot et Alerte est juste
et
Pour idTypeAlerte = 2 ma relation 1N,11 entre Ilot et Alerte est fausse
Je voulais savoir si il y a moyen de changer la relation uniquement pour le TypeAlerte en question ?
A mon sens, la seule solution pour mettre en oeuvre cette contrainte côté base de données (et non côté application), c'est avec un TRIGGER BEFORE INSERT.
Tu pars sur ton nouveau modèle, avec relation n,n, et tu mets en place un TRIGGER BEFORE INSERT ON alerte qui teste l'idTypeAlerte, et en fonction qui contrôle que idAlerte n'existe pas déjà dans la table de relation ...
DELIMITER &&
CREATE TRIGGER check_type_alerte
BEFORE INSERT ON Ilot_Alerte -- relation contient dans ton exemple
FOR EACH ROW
BEGIN
SELECT idTypeAlerte INTO @typealerte
FROM Alerte
WHERE idAlerte = NEW.idAlerte;
IF @typealerte = 1 AND EXISTS (
SELECT *
FROM Ilot_Alerte
WHERE NEW.idAlerte
) THEN
SIGNAL SQLSTATE '23000' SET MESSAGE_TEXT = 'Impossible de lier cette alerte de type 1 à deux îlots';
END IF;
END&&
DELIMITER ;
Cela ne t'affranchit pas de faire le contrôle côté applicatif pour empêcher de proposer à l'utilisateur de lier une alerte à plusieurs îlots si elle est du type 1 ...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Site Internet : https://devst.go.yj.fr