db-update-2020-10-09.sql
1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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;