- 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
60 lines
2.0 KiB
SQL
Executable File
60 lines
2.0 KiB
SQL
Executable File
-- ========================================
|
|
-- Script d'ajout de contraintes UNIQUE
|
|
-- Pour éviter les doublons dans ope_users et ope_users_sectors
|
|
-- Date: 2025-10-10
|
|
-- ========================================
|
|
|
|
USE pra_geo;
|
|
|
|
-- ========================================
|
|
-- 1. TABLE ope_users
|
|
-- ========================================
|
|
|
|
-- Vérifier et supprimer les doublons existants avant d'ajouter la contrainte
|
|
-- (Garde la première occurrence, supprime les duplicatas)
|
|
DELETE ou1 FROM ope_users ou1
|
|
INNER JOIN ope_users ou2
|
|
WHERE ou1.id > ou2.id
|
|
AND ou1.fk_operation = ou2.fk_operation
|
|
AND ou1.fk_user = ou2.fk_user;
|
|
|
|
-- Ajouter la contrainte UNIQUE sur (fk_operation, fk_user)
|
|
ALTER TABLE ope_users
|
|
ADD UNIQUE KEY `idx_operation_user` (`fk_operation`, `fk_user`);
|
|
|
|
-- ========================================
|
|
-- 2. TABLE ope_users_sectors
|
|
-- ========================================
|
|
|
|
-- Vérifier et supprimer les doublons existants avant d'ajouter la contrainte
|
|
-- (Garde la première occurrence, supprime les duplicatas)
|
|
DELETE ous1 FROM ope_users_sectors ous1
|
|
INNER JOIN ope_users_sectors ous2
|
|
WHERE ous1.id > ous2.id
|
|
AND ous1.fk_operation = ous2.fk_operation
|
|
AND ous1.fk_user = ous2.fk_user
|
|
AND ous1.fk_sector = ous2.fk_sector;
|
|
|
|
-- Ajouter la contrainte UNIQUE sur (fk_operation, fk_user, fk_sector)
|
|
ALTER TABLE ope_users_sectors
|
|
ADD UNIQUE KEY `idx_operation_user_sector` (`fk_operation`, `fk_user`, `fk_sector`);
|
|
|
|
-- ========================================
|
|
-- Vérification
|
|
-- ========================================
|
|
|
|
-- Vérifier les contraintes ajoutées
|
|
SHOW INDEX FROM ope_users WHERE Key_name = 'idx_operation_user';
|
|
SHOW INDEX FROM ope_users_sectors WHERE Key_name = 'idx_operation_user_sector';
|
|
|
|
-- Compter les doublons restants (devrait retourner 0 lignes)
|
|
SELECT fk_operation, fk_user, COUNT(*) as count
|
|
FROM ope_users
|
|
GROUP BY fk_operation, fk_user
|
|
HAVING count > 1;
|
|
|
|
SELECT fk_operation, fk_user, fk_sector, COUNT(*) as count
|
|
FROM ope_users_sectors
|
|
GROUP BY fk_operation, fk_user, fk_sector
|
|
HAVING count > 1;
|