J'ai un script Postgres que j'ai l'intention d'exécuter sur plusieurs bases de données. L'exemple SQL a des fonctions et des tables commePsql substitution de variable pour le script Postgres avec des fonctions
CREATE FUNCTION point() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.the_geom:=ST_SetSRID(geom, :CRS) ;
RETURN NEW;
END
$$;
CREATE TABLE admin (
gid integer NOT NULL,
geom geometry(Polygon,:CRS)
);
J'ai mis une variable à l'intérieur afin que je puisse le remplacer à l'exécution comme
psql -d db -p 5432 -U username -h localhost -f test.sql --variable=CRS=3857
Pourquoi la variable ne se correctement substitué dans les définitions de table et non définition de la fonction
peut-être parce que plpgsql a l'opérateur ':' et que sql ne le fait pas? –