34 lines
1.4 KiB
PL/PgSQL
34 lines
1.4 KiB
PL/PgSQL
-- Migration #103 : Numéro de dossier (format AAAA-NNNNNN, séquence par année)
|
|
-- Colonnes sur utilisateurs, assistantes_maternelles, parents.
|
|
-- Table de séquence par année pour génération unique.
|
|
|
|
BEGIN;
|
|
|
|
-- Table de séquence : une ligne par année, prochain = prochain numéro à attribuer (1..999999)
|
|
CREATE TABLE IF NOT EXISTS numero_dossier_sequence (
|
|
annee INT PRIMARY KEY,
|
|
prochain INT NOT NULL DEFAULT 1
|
|
);
|
|
|
|
-- Colonne sur utilisateurs (AM et parents : numéro attribué à la soumission)
|
|
ALTER TABLE utilisateurs
|
|
ADD COLUMN IF NOT EXISTS numero_dossier VARCHAR(20) NULL;
|
|
|
|
-- Colonne sur assistantes_maternelles (redondant avec users pour accès direct)
|
|
ALTER TABLE assistantes_maternelles
|
|
ADD COLUMN IF NOT EXISTS numero_dossier VARCHAR(20) NULL;
|
|
|
|
-- Colonne sur parents (un numéro par famille, même valeur sur les deux lignes si co-parent)
|
|
ALTER TABLE parents
|
|
ADD COLUMN IF NOT EXISTS numero_dossier VARCHAR(20) NULL;
|
|
|
|
-- Index pour recherche par numéro
|
|
CREATE INDEX IF NOT EXISTS idx_utilisateurs_numero_dossier
|
|
ON utilisateurs(numero_dossier) WHERE numero_dossier IS NOT NULL;
|
|
CREATE INDEX IF NOT EXISTS idx_assistantes_maternelles_numero_dossier
|
|
ON assistantes_maternelles(numero_dossier) WHERE numero_dossier IS NOT NULL;
|
|
CREATE INDEX IF NOT EXISTS idx_parents_numero_dossier
|
|
ON parents(numero_dossier) WHERE numero_dossier IS NOT NULL;
|
|
|
|
COMMIT;
|