Ajouter migrations/06_validations_enrich.sql
This commit is contained in:
parent
3f38e3aab8
commit
7326e78629
53
migrations/06_validations_enrich.sql
Normal file
53
migrations/06_validations_enrich.sql
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
-- ==========================================================
|
||||||
|
-- 06_validations_enrich.sql : Traçabilité complète des validations
|
||||||
|
-- - Ajoute la colonne 'valide_par' (FK -> utilisateurs.id)
|
||||||
|
-- - ON DELETE SET NULL pour conserver l'historique
|
||||||
|
-- - Ajoute index utiles pour les requêtes (valideur, statut, date)
|
||||||
|
-- A exécuter après : 01_init.sql, 02_indexes.sql, 03_checks.sql, 04_fk_policies.sql, 05_triggers.sql
|
||||||
|
-- ==========================================================
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
|
||||||
|
-- 1) Colonne 'valide_par' si absente
|
||||||
|
ALTER TABLE validations
|
||||||
|
ADD COLUMN IF NOT EXISTS valide_par UUID NULL;
|
||||||
|
|
||||||
|
-- 2) FK vers utilisateurs(id), ON DELETE SET NULL
|
||||||
|
DO $$
|
||||||
|
DECLARE conname text;
|
||||||
|
BEGIN
|
||||||
|
SELECT tc.constraint_name INTO conname
|
||||||
|
FROM information_schema.table_constraints tc
|
||||||
|
JOIN information_schema.key_column_usage kcu
|
||||||
|
ON tc.constraint_name = kcu.constraint_name
|
||||||
|
AND tc.table_schema = kcu.table_schema
|
||||||
|
WHERE tc.table_schema = 'public'
|
||||||
|
AND tc.table_name = 'validations'
|
||||||
|
AND tc.constraint_type= 'FOREIGN KEY'
|
||||||
|
AND kcu.column_name = 'valide_par';
|
||||||
|
|
||||||
|
IF conname IS NOT NULL THEN
|
||||||
|
EXECUTE format('ALTER TABLE public.validations DROP CONSTRAINT %I', conname);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
EXECUTE $sql$
|
||||||
|
ALTER TABLE public.validations
|
||||||
|
ADD CONSTRAINT fk_validations_valide_par
|
||||||
|
FOREIGN KEY (valide_par) REFERENCES public.utilisateurs(id) ON DELETE SET NULL
|
||||||
|
$sql$;
|
||||||
|
END $$;
|
||||||
|
|
||||||
|
-- 3) Index pour accélérer les recherches
|
||||||
|
-- - qui a validé quoi récemment ?
|
||||||
|
-- - toutes les validations par statut / par date
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_validations_valide_par_cree_le
|
||||||
|
ON validations (valide_par, cree_le);
|
||||||
|
|
||||||
|
-- Certains existent peut-être déjà : on sécurise
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_validations_id_utilisateur_cree_le
|
||||||
|
ON validations (id_utilisateur, cree_le);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_validations_statut
|
||||||
|
ON validations (statut);
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
Loading…
x
Reference in New Issue
Block a user