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;