PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#26 PL/pgSQL » problème de requêtes imbriquées » 07/02/2013 12:01:32

doha-i2m
Réponses : 12

Bonjour,
pg/sql n'accepte pas la requête imbriquée!!
ma requete me parait simple :

select the_geom  from (select cname from classofgeometry where eat='-') as c_name;

mais le message d'erreur affiché est : " ERREUR:  la colonne « the_geom » n'existe pas"!!!

#27 Re : PL/pgSQL » récupération nom de table » 04/02/2013 17:34:18

ok, j'ai une table qui contient des noms de classes(des tables de la base), et j'ai un trigger lors de l'insertion d'un nouveau tuple de données, je veux comparer le nom de la table dont on à insérer la nouvelle ligne pour la comparer dans la table des classes.

#28 PL/pgSQL » récupération nom de table » 04/02/2013 16:38:49

doha-i2m
Réponses : 3

Bonjour,
y a t-il une méthode ou requête pour la récupération du nom de la table à partir d'un champ?
merci

#30 PL/pgSQL » clés primaires multiples » 03/02/2013 12:06:12

doha-i2m
Réponses : 3

Bonjour,
Je me demande s'il est possible d'identifier plusieurs clés primaires (ou contraintes d'unicités) pour une table à condition que la violation de la contrainte ne se produit que lors de la répétition de ces attributs tous ensembles. Par exemple : nom : unique  et prénom: unique, je peut avoir "Bruno brelle" et "Bruno Bovary" mais "Bruno brelle" ne se répète plus. Cela ne marche pas et le système considère que chaque attribut ne peut se présenter qu'une seule fois.

C'est la table que j'ai crée:

create table ClassVersion (
CName text PRIMARY KEY,
VersC integer unique,
SAT date unique,
EAT date);

SAT(start application time) est une date qui peut se répéter plusieurs fois mais pas avec les mêmes valeurs Cname et VersC. Comment faire?
Merci.

#31 PL/pgSQL » fonction trigger nécessitant des arguments » 21/01/2013 12:14:40

doha-i2m
Réponses : 1

Bonjour à tous,
j'ai une fonction qui s'applique à tous les tables de la base : 

CREATE OR REPLACE FUNCTION verifier_coherence(text,geometry,text,geometry)
  RETURNS trigger AS'   
declare
rel text[3];
rec record;
R text;

begin
delete from contraintes_reduits;
insert into contraintes_reduits(idc,classe_obj1,classe_obj2,relation_topo,specification,condition_permis)
select idc,classe_obj1,classe_obj2,relation_topo,specification,condition_permis from contraintes where classe_obj1=$1;

rel=relate_obj($1,$2,$3,$4);
for rec in select relation_topo from contraintes_reduits where classe_obj2=$3
loop
select relation_topo into R from contraintes_reduits where classe_obj2=$3;
if (rel[2]=R or rel[2]=''disjoint'')
then
RAISE NOTICE 'Ajout est valide';
else
RAISE EXCEPTION 'Erreur: relation invalide';
end if;
end loop;
Return new;
END;
'LANGUAGE 'plpgsql';

Je veux exécuter cette fonction en tant que trigger :
CREATE TRIGGER verifier_ajout AFTER INSERT ON small_roads
EXECUTE PROCEDURE vérifier_coherence();

Mais la fonction trigger ne peux pas avoir des arguments, je n'ai pas d'idées comment utiliser ces paramètres (text,geometry,text,geometry) qui sont nécessaires pour la fonction.
Normalement vous n'avez pas besoin de comprendre le contexte de la fonction, je veux juste savoir s'il y a une solution pour ces paramètres, j'ai trouver dans des tuto une variable appelée TG_ARGV[] mais il n'y a pas d'exemples pour comprendre comment l'utiliser, j'ai essayer de l'appliquer mais toujours   il y a des erreurs.
Merci.

#32 Re : PL/pgSQL » déclencher un trigger fonctionnant sur plusieurs tables » 26/11/2012 11:56:59

Merci pour votre réponse, en fait cette partie de mon projet de mastère consiste à s'assurer,Lors de l'insertion d'un nouvel objet dans la base, que ce dernier ne cause pas des incohérences (exemple chevauchement avec un autre bâtiment..), la vérification se fait en comparant les relations spatiales détectées lors de cette insertion avec les relations interdites se trouvant dans la table des contraintes (elle contient les champs suivantes: idc,classe_obj1,classe_obj2,relation,spécification (interdite ou non)), je veux avoir une vue de la table des contraintes mais en affichant que les contraintes où classe_obj1=la classe de l'objet inséré(pour faciliter le procédure de la vérification par la suite). Je veux que cette étape de la réduction s'exécute automatiquement à chaque insertion d'un nouvel objet.
J'espère que vous avez bien compris mon problème. Merciii

#33 PL/pgSQL » detection des relations spatiales » 25/11/2012 17:31:15

doha-i2m
Réponses : 1

Bonjour,
Je cherche une fonction sql pour détecter des relations spatiales entre deux objets géographiques. Dans postgresql, j'ai trouvé une fonction mais qui retourne seulement vrai ou faux : vrai = il existe une relation , faux = n'existe pas. Mais il n'y a pas une fonction qui retourne le nom de la relation s'il elle existe(intersecte,touche,chevauche..).
Merci de me répondre.

#34 PL/pgSQL » déclencher un trigger fonctionnant sur plusieurs tables » 25/11/2012 17:01:52

doha-i2m
Réponses : 3

Bonjour,
Mon projet de mastère étudie la vérification de la cohérence lors de la mise à jour des BDG. Ma base de données contient des tables contenant des objets (bâtiments,rivières,parcs,personnes..) et une table pour les contraintes spatiales ( les relations spatiales interdites entre les pairs des objets géographiques), je veux que lors de l'insertion d'un nouvel objet dans la base, la table des contraintes sera réduite c'est à dire le système m'affichera seulement les lignes qui concernent ce type d'objet à insérer.
Exemple:

create trigger trg_reduce_constrainte
after insert on buildings
select * from contraintes where contraintes.classe_obj1='buildings';
end;

Mais ce trigger n'est pas accepté par le Postgresql. SVP aidez moi à résoudre ce problème sad
J'attends votre réponse,Merci d'avance smile

Pied de page des forums

Propulsé par FluxBB