Vous n'êtes pas identifié(e).
Pages : 1
Merci pour la requête d'insertion.
Pour l'instant je vais me contenter d'une requête d'insertion et une autre pour les mise à jour.
Je vais creuser pour combiner les deux :-)
Bonjour,
oui je souhaite mettre à jour automatiquement. Et oui le trigger est bien BEFORE INSERT OR UDAPTE
Manuellement ? comment fait-on ?
Bonjour,
après plusieurs essais, je n'arrive pas à avoir le bon résultat.
J'ai une table "appui" dans laquelle se trouvent des entités avec une colonne 'etat_appui' et une colonne 'type_pot'.
J'ai une autre table "contour_aerien" dans laquelle se trouve la colonne 'nb_appuis_bt_etudies'.
Les points de la table "appui" se trouvent dans le polygone de table "contour_aerien".
Par géométrie, je souhaite avoir le nombre de point avec les valeurs 'etat_appui'=BON et 'type_pot'=POT_BT dans le polygone de table "contour_aerien".
Sauf que j'obtiens à chaque fois 0...
Evidemment certains objets ont bien les valeurs 'etat_appui'=BON et 'type_pot'=POT_BT
CREATE OR REPLACE FUNCTION public.bt_func()
RETURNS trigger AS
$BODY$
BEGIN
select into NEW.nb_appuis_bt_etudies count(etat_appui)
from appui
where st_within(NEW.geom, appui.geom) and appui.type_pot LIKE 'POT_BT' and appui.etat_appui like 'BON';
return NEW;
END;
voici le message d'erreur
duplicate key value violates unique constraint "test_importb_pkey"
DETAIL: Key (gid)=(541) already exists.
En essayant en sélectionnant les colonnes, j'ai une autre erreur
insert into test_importb
select test_import.id_metier_, test_import.type_pf, test_import.geom
from test_import, test_importb
where test_importb.id_metier_<>test_import.id_metier_;
column "gid" is of type integer but expression is of type character varying
LINE 2: select test_import.id_metier_, test_import.type_pf, test_im...
^
HINT: You will need to rewrite or cast the expression.
je n'arrive toujours pas à insérer de nouvelles entités
le voici
invalid reference to FROM-clause entry for table "test_importb"
LINE 6: ...f) from test_import where test_import.id_metier_<>test_impor...
^
HINT: There is an entry for table "test_importb", but it cannot be referenced from this part of the query.
Bonjour,
Je souhaite mettre à jour une table dans postgres en mettant à jour ou en insérant de nouvelles entités.
J'arrive à mettre à jour mais je n'arrive pas à insérer.
Voici mon code
update test_importb
set
geom = (select geom from test_import where test_importb.id_metier_=test_import.id_metier_),
type_pf = (select type_pf from test_import where test_importb.id_metier_=test_import.id_metier_);
insert into test_importb select * from test_import where test_importb.id_metier_<>test_import.id_metier_;
end
et le message d'erreur :
update test_importb
set
geom = (select geom from test_import where test_importb.id_metier_=test_import.id_metier_),
type_pf = (select type_pf from test_import where test_importb.id_metier_=test_import.id_metier_);
insert into test_importb select * from test_import where test_importb.id_metier_<>test_import.id_metier_;
end
Merci :-)
Bonjour,
effectivement c'est bien public.adresse
Par contre les entités déjà existantes ne se mettent pas à jour.
J'ai trouvé mon bonheur en fouillant sur le net, mais mon champ se remplit quand je crée de nouvelles entités dans la table adresse. Celles déjà présentes ne se mettent pas à jour.
Voici mon code
CREATE OR REPLACE FUNCTION public.nompm_func()
RETURNS trigger AS
$BODY$
BEGIN
select into NEW.nom_pm nom_pm from za_pm where st_within(NEW.geom, geom);
return NEW ;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.nompm_func()
OWNER TO postgres;
CREATE TRIGGER nompm
BEFORE INSERT OR UPDATE OF pm
ON public.suivi_immeuble
FOR EACH ROW
EXECUTE PROCEDURE public.nompm_func();
Bonjour, étant novice dans les fonctions / déclencheurs, je sollicite vos compétences.
J'ai des tables, "za_pm" qui est un polygone et "adresse" qui est un point.
Ces deux tables ont un champ "nom_pm".
Les points de la table adresse se trouve géométriquement dans les polygones de la table za_pm.
Comment remplir automatiquement le champ "nom_pm" de la table adresse par le champ "nom_pm" de la table za_pm.
Merci :-)
Pages : 1