-- ================================================================================ -- Script de migration : Correction des contraintes FK pour isolation par opération -- ================================================================================ -- -- Ce script modifie les contraintes de clés étrangères pour que : -- - ope_users_sectors.fk_user → pointe vers ope_users.id (au lieu de users.id) -- - ope_pass.fk_user → pointe vers ope_users.id (au lieu de users.id) -- -- Cela permet une isolation complète des opérations : supprimer une opération -- supprime automatiquement tous ses ope_users, ope_sectors, ope_users_sectors et ope_pass. -- -- ORDRE D'EXÉCUTION : -- 1. dva_geo (DEV) - test -- 2. rca_geo (RECETTE) -- 3. pra_geo (PRODUCTION) -- -- ================================================================================ USE dva_geo; -- Adapter selon l'environnement (dva_geo, rca_geo, pra_geo) -- ================================================================================ -- 1. Modification de ope_users_sectors.fk_user -- ================================================================================ -- Supprimer l'ancienne contrainte FK ALTER TABLE ope_users_sectors DROP FOREIGN KEY ope_users_sectors_ibfk_2; -- Recréer la contrainte FK vers ope_users.id ALTER TABLE ope_users_sectors ADD CONSTRAINT ope_users_sectors_ibfk_2 FOREIGN KEY (fk_user) REFERENCES ope_users (id) ON DELETE CASCADE ON UPDATE CASCADE; -- ================================================================================ -- 2. Modification de ope_pass.fk_user -- ================================================================================ -- Supprimer l'ancienne contrainte FK ALTER TABLE ope_pass DROP FOREIGN KEY ope_pass_ibfk_3; -- Recréer la contrainte FK vers ope_users.id ALTER TABLE ope_pass ADD CONSTRAINT ope_pass_ibfk_3 FOREIGN KEY (fk_user) REFERENCES ope_users (id) ON DELETE CASCADE ON UPDATE CASCADE; -- ================================================================================ -- Vérification finale -- ================================================================================ SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME IN ('ope_users_sectors', 'ope_pass') AND COLUMN_NAME = 'fk_user' ORDER BY TABLE_NAME; -- Résultat attendu : -- ope_pass | fk_user | ope_pass_ibfk_3 | ope_users | id -- ope_users_sectors | fk_user | ope_users_sectors_ibfk_2 | ope_users | id