J'avais déjà posé cette question en septembre de l'année dernière, mais suites à des changement de directives, j'ai été contrains d'abandonner mon projet.
Toutefois, ce projet est à nouveau au goût du jour, et je souhaite à nouveau supprimer un nombre important de tables.
Vous trouverez l'ancien post ici
J'ai essayé les deux fonctions suivantes :
Mais j'obtiens un résultat nul, ce qui signifie qu'aucune table n'a été selectionnée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 CREATE OR REPLACE FUNCTION "public"."droppertables" (text) RETURNS integer AS $body$ DECLARE enregs record; compteur integer = 0 ; BEGIN FOR enregs IN SELECT tablename FROM pg_tables WHERE tablename like '%'||$1 LOOP EXECUTE ''DROP TABLE '' || quote_ident(enregs.tablename) compteur:=compteur+1; END LOOP; return compteur; END; $body$ LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER; SELECT droppertables('MonPrefixe');
Mais j'obtiens l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 CREATE OR REPLACE FUNCTION "public"."droppertables" (text) RETURNS integer AS $body$ DECLARE enregs record; compteur integer = 0 ; BEGIN FOR enregs IN SELECT tablename FROM pg_tables WHERE tablename ~ $1 LOOP EXECUTE ''DROP TABLE '' || quote_ident(enregs.tablename) compteur:=compteur+1; END LOOP; return compteur; END; $body$ LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER; SELECT droppertables('^MonPrefixe');
J'avoue ne pas comprendre ou peut se situer cette erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ERROR: syntax error at or near "DROP" CONTEXT: PL/pgSQL function "droppertables" line 9 at execute statement
Je profite de ce fil pour ajouter une seconde question :
Les tables que je supprime sont des tables à composante spatiale, il me faut donc aussi supprimer la ligne associée dans la table "geometry_columns". J'ai essayé de modifier la fonction pour supprimer cette ligne mais j'avoue avoir échoué.
En vous remerciant par avance.
Partager