Supprimer des tables dont le nom commence par XXX
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 :
Code:
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 un résultat nul, ce qui signifie qu'aucune table n'a été selectionnée.
Code:
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'); |
Mais j'obtiens l'erreur suivante :
Code:
1 2 3
|
ERROR: syntax error at or near "DROP"
CONTEXT: PL/pgSQL function "droppertables" line 9 at execute statement |
J'avoue ne pas comprendre ou peut se situer cette erreur.
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.