-- 1/3 : Création de la table temporaire DROP TABLE IF EXISTS w_dbsetup ; CREATE TEMP TABLE w_dbsetup AS SELECT t_indicateur_theme.oid, t_indicateur_theme.code, t_indicateur_theme.texte, t_indicateur_theme.level, COALESCE(t_indicateur_parent_theme.code,'') AS parent_code FROM eco.t_indicateur_theme LEFT JOIN eco.t_indicateur_theme t_indicateur_parent_theme ON t_indicateur_theme.parent_id = t_indicateur_parent_theme.oid ORDER BY 2 LIMIT 0 ; -- 2/3 : Peuplement de la table temporaire INSERT INTO w_dbsetup( oid, code, texte, level, parent_code ) VALUES (1, '--0', 'Source', 1, ''), (1, '--1', 'Thèmes principaux', 1, ''), (1, '--2', 'Période', 1, ''), (1, '--3', 'Rapports', 1, ''), (1, '--4', 'Type de donnée', 1, ''), (1, '--DDATE', 'Date date', 2, '--2'), (1, '--DDATE_COMMANDE', 'Date date_commande', 2, '--2'), (1, '--DDATE_ENGAGEMENT', 'Date date_engagement', 2, '--2'), (1, '--DDATE_FIN', 'Date date_fin', 2, '--2'), (1, '--R1', 'Rapports CTI', 2, '--3'), (1, '--R10002', 'Essentiels CTI', 3, '--R1'), (1, '--R10003', 'Dispositifs Médicaux', 3, '--R1'), (1, '--R10004', 'Dispostifs Médicaux Implantables', 3, '--R1'), (1, '--R10005', 'Médicaments', 3, '--R1'), (1, '--R10006', 'Parapharmacie', 3, '--R1'), (1, '--R10007', 'Economat', 3, '--R1'), (1, '--R10008', 'Cuisine', 3, '--R1'), (1, '--R10009', 'Lingerie', 3, '--R1'), (1, '--R10010', 'Atelier', 3, '--R1'), (1, '--R3', 'Rapports Etablissement', 2, '--3'), (1, '--R30011', 'CTI Portfolio ', 3, '--R3'), (1, '--S1', 'Indicateurs CTI', 2, '--0'), (1, '--S2', 'Indicateurs Groupe', 2, '--0'), (1, '--S3', 'Indicateurs spécifiques Etablissement', 2, '--0'), (1, '--T0010', 'Mouvements', 2, '--1'), (1, '--T0020', 'Commandes', 2, '--1'), (1, '--T0030', 'Stocks mensuels', 2, '--1'), (1, '1QTE', 'Quantité', 2, '--4'), (1, '2MNT', 'Montants', 2, '--4'), (1, '3DUR', 'Durées', 2, '--4'), (1, '4TAUX', 'Taux', 2, '--4'), (1, '5STOCK', 'Stocks', 2, '--4') ; -- 3/3 : Màj de la table iCTI INSERT INTO eco.t_indicateur_theme (code, texte, level) SELECT code, texte, level FROM w_dbsetup WHERE code NOT IN (SELECT code FROM eco.t_indicateur_theme WHERE t_indicateur_theme.code IS NOT NULL) ; UPDATE eco.t_indicateur_theme SET texte = w_dbsetup.texte, level = w_dbsetup.level, parent_id = COALESCE(t_indicateur_parent_theme.oid,0) FROM w_dbsetup LEFT JOIN eco.t_indicateur_theme t_indicateur_parent_theme ON w_dbsetup.parent_code = t_indicateur_parent_theme.code WHERE t_indicateur_theme.code = w_dbsetup.code AND ( t_indicateur_theme.texte IS DISTINCT FROM w_dbsetup.texte OR t_indicateur_theme.level IS DISTINCT FROM w_dbsetup.level OR t_indicateur_theme.parent_id IS DISTINCT FROM COALESCE(t_indicateur_parent_theme.oid,0) ) ; SELECT base.cti_reorganize_indicateur_theme('eco') ;