Rename script + remove triggers, view, procedure

All theses part will be moving on another script
This commit is contained in:
Yorick Barbanneau 2022-05-03 21:59:25 +02:00
parent 87402c06fc
commit 1699aa747f

View file

@ -142,72 +142,6 @@ if __name__ == '__main__':
PRIMARY KEY (com,id_indicateur,date_debut) PRIMARY KEY (com,id_indicateur,date_debut)
);""", );""",
{'schema':AsIs(args.schema_name)}) {'schema':AsIs(args.schema_name)})
curs.execute("""
CREATE OR REPLACE VIEW %(schema)s.view_indicateur_dep AS
SELECT id_departement, d.dep, d.ncc, s.id_indicateur, s.date_debut, SUM(s.VALEUR)
FROM %(schema)s.departement d
INNER JOIN %(schema)s.commune c ON c.dep = d.dep
INNER JOIN %(schema)s.statistique s ON s.com = c.com
GROUP BY id_departement,d.dep, s.date_debut, d.ncc, s.id_indicateur
ORDER BY id_indicateur;""",
{'schema':AsIs(args.schema_name)})
curs.execute("""
CREATE OR REPLACE VIEW %(schema)s.view_indicateur_reg AS
SELECT id_region, r.reg, r.ncc, s.id_indicateur, s.date_debut, SUM(s.valeur)
FROM %(schema)s.region r
INNER JOIN %(schema)s.departement d ON d.reg = r.reg
INNER JOIN %(schema)s.commune c ON c.dep = d.dep
INNER JOIN %(schema)s.statistique s ON s.com = c.com
GROUP BY id_region, r.reg, s.date_debut, r.ncc, s.id_indicateur
ORDER BY id_indicateur;""",
{'schema':AsIs(args.schema_name)})
curs.execute("""
ALTER TABLE %(schema)s.region
ADD COLUMN IF NOT EXISTS population INT;
""",
{'schema':AsIs(args.schema_name)})
curs.execute("""
ALTER TABLE %(schema)s.departement
ADD COLUMN IF NOT EXISTS population INT;
""",
{'schema':AsIs(args.schema_name)})
curs.execute("""
CREATE OR REPLACE PROCEDURE %(schema)s.PRC_POP_REG_DEP()
LANGUAGE plpgsql
AS $$
DECLARE
REC RECORD;
BEGIN
FOR REC IN (SELECT id_departement, ncc, SUM valeur
FROM %(schema)s.view_indicateur_dep v
WHERE id_indicateur = 1
AND date_debut = '2018') LOOP
UPDATE %(schema)s.departement
SET population = REC.valeur
WHERE id_departement = REC.id_departement;
END LOOP;
FOR REC IN (SELECT reg, SUM(population) valeur
FROM DEPARTEMENT d
GROUP BY REG) LOOP
UPDATE %(schema)s.region
SET population = REC.VALEUR
WHERE reg = REC.reg;
END LOOP;
END;
$$;""",
{'schema':AsIs(args.schema_name)})
conn.commit()
t.stop() t.stop()
t.start('Import data from csv files') t.start('Import data from csv files')
@ -245,36 +179,4 @@ if __name__ == '__main__':
conn.commit() conn.commit()
t.stop() t.stop()
t.start('Call procedure')
with conn.cursor() as curs:
curs.execute("CALL %(schema)s.PRC_POP_REG_DEP()",
{'schema':AsIs(args.schema_name)}
)
t.stop()
t.start('Add Modify Trigger')
with conn.cursor() as curs:
curs.execute("""
CREATE OR REPLACE FUNCTION %(schema)s.block_maj_reg_dep()
RETURNS TRIGGER AS $bloquage$
BEGIN
RAISE EXCEPTION
'Mise à jour non autorisé';
END;
$bloquage$ language plpgsql;
CREATE TRIGGER TRG_BLOQ_MAJ_REG
BEFORE INSERT OR UPDATE OR DELETE ON %(schema)s.region
FOR EACH ROW EXECUTE PROCEDURE %(schema)s.block_maj_reg_dep();
CREATE TRIGGER TRG_BLOQ_MAJ_DEP
BEFORE INSERT OR UPDATE OR DELETE ON %(schema)s.departement
FOR EACH ROW EXECUTE PROCEDURE %(schema)s.block_maj_reg_dep();
""",
{'schema':AsIs(args.schema_name)})
conn.commit()
t.stop()
conn.close() conn.close()