db-update-2020-10-09.sql 1.84 KB
use database;

-- ANNULATION de la requete db-update-2020-10-02.sql
-- car c'était une erreur...

-- POUR INFO, bon à savoir :
-- before exec 
-- SET FOREIGN_KEY_CHECKS=0;
-- after exec 
-- SET FOREIGN_KEY_CHECKS=1;

-- En effet, c'était une erreur car c’est dangereux de faire ça (on delete set null) car on perd de l’information : 
-- en passant la FK à null, on ne sait plus vers quoi elle pointait avant, on a perdu l’historique !
-- Finalement, “on delete NO ACTION” est un bon garde fou car ça empêche de supprimer une entité si elle a des entités liées 
-- (qui deviendraient alors “orphelines” si on appliquait automatiquement le “SET NULL”)

-- 1) Contraintes sur la table materiels

-- a) contrainte "no action" sur groupe thematique
ALTER TABLE materiels
 DROP FOREIGN KEY fk_materials_thematic_group1,
 DROP INDEX fk_materials_thematic_group1;
ALTER TABLE materiels
  ADD CONSTRAINT fk_materials_thematic_group1 FOREIGN KEY (groupes_thematique_id) REFERENCES groupes_thematiques (id) ON DELETE no action ON UPDATE NO ACTION;
  
-- b) contrainte "no action" sur groupe metier
ALTER TABLE materiels
 DROP FOREIGN KEY fk_materials_work_group1,
 DROP INDEX fk_materials_work_group1;
ALTER TABLE materiels
  ADD CONSTRAINT fk_materials_work_group1 FOREIGN KEY (groupes_metier_id) REFERENCES groupes_metiers (id) ON DELETE no action ON UPDATE NO ACTION;

-- c) contrainte "no action" sur gestionnaire_id
-- Définition à l'origine :
-- ADD CONSTRAINT fk_materiels_gestionnaire_id FOREIGN KEY (gestionnaire_id) REFERENCES `users` (id) ON DELETE SET NULL ON UPDATE NO ACTION,
ALTER TABLE materiels
 DROP FOREIGN KEY fk_materiels_gestionnaire_id,
 DROP INDEX fk_materiels_gestionnaire_id;
ALTER TABLE materiels
  ADD CONSTRAINT fk_materiels_gestionnaire_id FOREIGN KEY (gestionnaire_id) REFERENCES users (id) ON DELETE no action ON UPDATE NO ACTION;