Files
geo/api/scripts/orga/fix_fk_constraints.sql
Pierre 0687900564 fix: Récupérer l'opération active depuis la table operations
- Corrige l'erreur SQL 'Unknown column fk_operation in users'
- L'opération active est récupérée depuis operations.chk_active = 1
- Jointure avec users pour filtrer par entité de l'admin créateur
- Query: SELECT o.id FROM operations o INNER JOIN users u ON u.fk_entite = o.fk_entite WHERE u.id = ? AND o.chk_active = 1
2026-01-26 16:57:08 +01:00

66 lines
2.5 KiB
SQL
Executable File

-- ================================================================================
-- 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