Vous n'êtes pas identifié(e).
Bonjour à toutes, et à tous,
J'ai crée un commentaire sur une colonne d'une table (sous psql). J'aimerai afficher ce commentaire
afin de savoir si il a été correctement pris en compte.
COMMENT ON retient.retient_id IS 'le panier articles retenu par un user'\g\dd+ retientme permet d'avoir le commentaire concernant la table, mais pas le comment. sur la colonne ...
Merci d'avance.
Sophonie.
Je ne comprends pas cette requête qui d'ailleurs me renvoi un message d'erreur. En effet,
la requête UPDATE fais appel à la table temp_records alors qu'elle porte sur la table oai_records.
Bonjour Marc Cousin,
Dans ta requête que je n'ai pas encore testé, je lis ceci :
=temp.spatialne serait-ce pas plutôt temp_records à la place de temp, "c'est une question"
Sophonie.
Bonjour à tous et à toutes,
J'ai 2 tables, une table oai_records contenant plusieurs champs (ici 2 champs nous interresse, ie oai_identifier et ap_spatial).
Une table temp_records que j'ai crée et contenant 2 champs identifier et spatial.
Dans le champ ap_spatial de la table oai_records sont stockés les coordonnées de géoréférencement du tuple, mais ces dernières sont en Lambert 3 ==> aberration de l'affichage avec Google Map qui ne gère que du Lambert 2 (le problème des modules de cartographie du Web 2.0)
Solution : Dans la table oai_temp, j'ai importé les coordonnées Lambert 2 de chacun des tuples.
Ainsi l'unique correspondance entre les tuples est le champ oai_identifier(table oai_records) et identifier(table temp_records) Le but est de migrer le contenu du champ spatial de la table oai_temp dans le champ ap_spatial de la table oai_records et ce (identifier par identifier)
La requête suivante :
SELECT `oai_identifier` , `identifier` , `ap_spatial` , `spatial`
FROM oai_records
INNER JOIN temp_records ON oai_identifier = identifier
me renvoi bien tous les records ayant une correspondance dans les 2 tables (INNER JOIN)
Table oai_records Table temp_records
oai_identifier ap_spatial identifier spatial
IA00024637 0358840 3312540 IA00024637 -0.783333 45.283333
Faut-il passer une procédure stocké pour effectuer cette migration?
Merci d'avance.
Sophonie.
Bonjour gleu,
En tapant un \dts sur la base de données jogstore, j'ai 39 lignes (incluant tables, séquences, index).
Je ne voudrai pas (peu professionnel, et lourd...) de faire 39 fois, la commande suivante
ALTER ... OWNER TO ...;Autre question :
J'aurai voulu créer un bloc PL/PgSQL permettant d'effectuer cette modification ...
Comment m'y prendre, uniquement la méthode et non la solution (à but d'initiation)
Merci d'avance.
Sophonie.
J'ai effectué la commande suivante:
REASSIGN OWNED BY postgres TO sophonie;Effectivement cela ne peut pas marcher.
Cependant un REASSIGN OWNED BY u1 TO u2 génère le message suivant :
ERREUR: n'a pas pu supprimer les objets appartenant à rôle postgres car ils sont nécessaires au système de bases de données.
Pourtant je suis connecté à la base de données en question, et en tant qu'utilisateur
postgres!
Bonjour à tous et à toutes,
J'ai modifié le propriétaire de la base de données sur laquelle je travaille actuellement, cependant cette opération n'a pas modifié en cascade le propriétaire des tables associées à la base de données.
Quelle commande doit-on effectuer afin que les modifications puissent agir sur l'ensemble
des tables de la base de données, mais aussi sur les séquences, les index ...
Merci d'avance.
Sophonie.
Bonsoir à tous et à toutes,
Voici la situation suivante :
+------------+--------------+----------+-------------+--------------+-----------------------+
| Nom | Propriétaire | Encodage | Tri | Type caract. | Droits d'accès |
+------------+--------------+----------+-------------+--------------+-----------------------+
| jogstoreDB | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | |
| postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | |
| template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres |
| : postgres=CTc/postgres |
| template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres |
| : postgres=CTc/postgres |
+------------+--------------+----------+-------------+--------------+-----------------------+
(4 lignes)L'utilisateur sophonie existe, j'ai crée le role en tant que postgres.
Lorsque je souhaite modifier la base de données jogstoreDB afin d'en modifier le propriétaire.
ALTER TABLE jogstoreDB OWNER TO sophonie;
J'ai le message suivant :
ERREUR: la base de données « jogstoredb » n'existe pas
1°) Comment se fait-il qu'il me parle d'une base de données jogstoredb (db en minuscule) alors que j'ai supprimé cette base et que j'ai crée jogstoreDB (DB en majuscule)
2°) Peut-on supprimer le cache (ou la mémoire tampon)d'une base de données postgreSQL si ce cache existe?
Merci d'avance.
Sophonie.
Bonsoir,
Résolu, en lisant la documentation de PostgreSQL qui est plus explicite que le fichier
/usr/share/doc/postgresql-8.4.0/README.rpm-dist.
En vérifiant le fichier PG_VERSION ce dernier mentionnait 8.3, cela est dû au fait que j'ai installé PostgreSQL à partir des binaires du CDROM d'installation de Fedora 11 qui contenait à sa date de sortir la version 8.3.x
J'ai crée une base de données avec la version 8.3, puis lorsque j'ai fait la mise à jour ce message est apparu tout naturellement en instanciant la base de données.
Tout est plus clair maintenant.
N'ayant pas de données (ni même de tables dans cette base), je ne l'ai pas sauvegardé avec un pg_dumpall.
J'ai tout simplement crée un nouveau cluster de base de données comme indiqué dans le manuel.
Merci encore.
Bonne soirée.
En me connectant à un shell Unix, je tente de lancer le daemon postmaster, et j'ai le message suivant :
Une ancienne version du format de la base de données a été trouvée.
Vous devez mettre à jour le format des données avant d'utiliser PostgreSQL.
Comment peut-on (à l'aide quelle commande) mettre à jour le format de la base de données?
Merci d'avance
Sophonie.
Bonsoir,
J'ai omis de vous dire que je venais tout juste d'installer la version 11 de Fedora Linux.
Le poste sur lequel j'ai effectué l'installation n'avait pas de base de données PostgreSQL.
L'installation de PostgreSQL provient du repository de fedora updates (PostgreSQL 8.3)
Par contre une mise à jour a été effectuée via le repository de pgdg84 donc (PostgreSQL 8.4)
Il y a des chances que cela en soit la cause?
Sophonie.
Bonjour à tous et à toutes,
Lors du démarrage de mon OS Linux, j'ai le message suivant :
une ancienne version de la base de données a été trouvée, avant d'utiliser postgreSQL veuillez consulter le fichier /usr/share/doc/postgresql-8.4.0/README.rpm-dist
Que signifie explicitement ce message car je viens juste d'installer la version 8.4 de PostgreSQL
Merci d'avance.
Sophonie.
J'ai trouvé, en fait via le menu Fichier -> Préférences -> Onglet Affichage il faut cocher Langages.
Résolu.
Bonsoir à tous et à toutes,
J'ai installé pgAdmin et j'ai autorisé l'utilisation du langage de procédure PL/pgSQL, d'ailleurs ce dernier est reconnu.
La commande createlang -l [nomdemabase] m'a permis de le savoir.
Par contre sous pgAdmin 3 l'objet Language (celui avec une bulle jaune) du navigateur n'apparait pas!
Même en relançant le serveur et en rafraichissant rien n'y fait.
Merci d'avance.
Sophonie.
Bonsoir gleu,
J'ai modifié mon script (ie j'ai mis en commentaire toutes les informations concernant la table personnes).
Je vais procéder par dichotomie (uniquement la table authentification dans un premier temps)
La fonction ajout_typp_dept() se réfère à l'authentification de la personne avant son insertion dans la table
personnes.
Par contre, lorsque tu dis que la requête :
SELECT * FROM ajout_typp_dept() AS t (id int4, c text, ...); doit être de ce type mais la variable t à quoi correspond-elle, d'une part? et faut-il la déclare dans le bloc DECLARE du script.
Je suppose que c'est une variable de type RECORD, ou de type-composite %ROWTYPE?
Merci encore une fois.
Bonjour gleu,
En lisant la documentation de façon plus approfondie (j'avais lu ce chapitre sans vraiment l'appliquer),
j'en arrive à ce code si :
CREATE OR REPLACE FUNCTION ajout_typp_dept() RETURNS SETOF RECORD AS $$
DECLARE
v_idauth INTEGER;
v_idtype INTEGER;
v_iddept INTEGER;v_type typepersonne.typp_libelle%TYPE;
v_dept departements.dept_nom%TYPE;pers_rec personnes%ROWTYPE;
auth_rec authentification%ROWTYPE;BEGIN
-- Récupération du type de la personne
v_type := 'Candidat';
SELECT typp_libelle INTO v_type FROM typepersonne WHERE typp_libelle = v_type; -- idem pour Recruteur-- Récupération du département de la personne
v_dept := '24'; -- idem pour le 87
SELECT dept_nom INTO v_dept FROM departements WHERE dept_nom = v_dept;-- Ajout dans la table AUTHENTIFICATION
INSERT INTO authentification (auth_id, auth_login, auth_password, auth_dtecreation, auth_dtelastconn, auth_actif)
VALUES ((SELECT NVL(MAX(auth_id),0) + 1 FROM authentification), 'transact','PLkHDS3', CURRENT_DATE, CURRENT_DATE, 1)
RETURNING (auth_id) INTO v_idauth;SELECT * INTO auth_rec FROM authentification;
RETURN NEXT auth_rec;-- Ajout dans la table PERSONNES
INSERT INTO personnes (pers_id, pers_nom, pers_prenom, pers_dtenaissance, pers_adresse1, pers_adresse2,
pers_cp, pers_ville, pers_telephone, pers_fax, pers_gsm, pers_email, pers_idauth, pers_idtype,pers_iddept)
VALUES ((SELECT NVL(MAX(pers_id),0) + 1 FROM personnnes), 'GENIN','Vincent', date(21/12/1984), '31, Route de Treillissac',
'', '', 'Treillissac', '0547253210', '', '0652497510', 'v.genin@netscape.net', v_idauth, v_type, v_dept);SELECT * INTO pers_rec FROM personnes;
RETURN NEXT pers_rec;RETURN;
COMMIT;
END;$$ LANGUAGE 'plpgsql';
SELECT * FROM ajout_typp_dept();
Mais j'ai le message suivant :
ERROR: a column definition list is required for functions returning "record"
********** Erreur **********
ERROR: a column definition list is required for functions returning "record"
État SQL :42601
En ajoutant personnes (nomdelatable), il ne m'affiche pas de résultat de retour.
J'ai essayé un personnes%TYPE mais il ne l'accepete pas, d'ailleurs ni un personnes.pers_nom%TYPE.
Bonsoir gleu,
Comme je l'ai annoncé dans le ticket initial, ceci est mon premier script PL/pgSQL.
Je me disais bien que quelque chose ne collait pas 'something is wrong!', j'attends un retour alors
que j'ai crée une procédure renvoyant VOID (ie rien!).
Mais que fallait-il mettre comme retour, telle était la question?
En PL/SQL sous Oracle, cet action est beaucoup plus simple car c'est un simple bloc de code sans
le CREATE OR REPLACE FUNCTION ... $$
Merci encore.
Bonjour à tous et à toutes,
Actuellement, j'écris mon premier script PL/pgSQL, le but de ce script est le suivant :
-- Ecrire un code PL/pgSQL qui permettra de rajouter 2 personnes
-- un recruteur du département 87
-- un candidat du département 24
La requête s'execute correctement, mais ne renvoie aucun résultat, ce qui est normal.
Par contre lorsque je tape un ordre SQL à la suite du script pour récupérer mes tuples, je
n'en récupère aucun.
a) J'ai crée une procédure, dc elle ne renvoie pas de valeur. Aurait-il fallu créer une fonction?
Mais quelles seraient ses paramètres et le type de retour?
b) Pourquoi ne peut on pas mettre comme type de retour nomdelatable%ROWTYPE pour récupérer
l'ensemble des valeurs de la ligne.
Voici l'ensemble du code :
CREATE OR REPLACE FUNCTION ajout_typp_dept ( ) RETURNS VOID AS $$
DECLARE
v_idauth INTEGER;
v_idtype INTEGER;
v_iddept INTEGER;
v_type typepersonne.typp_libelle%TYPE;
v_dept departements.dept_nom%TYPE;
BEGIN
-- Récupération du type de la personne
v_type := 'Candidat';
SELECT typp_libelle INTO v_type FROM typepersonne WHERE typp_libelle = v_type; -- idem pour Recruteur
-- Récupération du département de la personne
v_dept := '24'; -- idem pour le 87
SELECT dept_nom INTO v_dept FROM departements WHERE dept_nom = v_dept;
-- Ajout dans la table AUTHENTIFICATION
INSERT INTO authentification (auth_id, auth_login, auth_password, auth_dtecreation, dtelastconn, auth_actif)
VALUES ((SELECT COALESCE (MAX(auth_id),0) + 1 FROM authentification), 'transact','PLkHDS3', CURRENT_DATE, CURRENT_DATE, 1)
RETURNING (auth_id) INTO v_idauth;
-- Ajout dans la table PERSONNES
INSERT INTO personnes (pers_id, pers_nom, pers_prenom, pers_dtenaissance, pers_adresse1, pers_adresse2,
pers_cp, pers_ville, pers_telephone, pers_fax, pers_gsm, pers_email, pers_idauth, pers_idtype,pers_iddept)
VALUES ((SELECT COALESCE (MAX(pers_id),0) + 1 FROM personnnes), 'GENIN','Vincent', date(21/12/1984), '31, Route de Treillissac',
'', '24000', 'Treillissac', '0547253210', '', '0652497510', 'v.genin@netscape.net', v_idauth, v_type, v_dept);
COMMIT;
END;
$$LANGUAGE plpgsql;
Merci d'avance, car je ne m'en sort pas.
Sophonie.
Je te fais entièrement confiance pour cela gleu, ainsi je vais me diriger vers des utilisateurs de
la distribution FedoraCore.
Merci encore.
Sophonie.
Les flèches de directions ne fonctionnent pas pour cette option de retour à la ligne dans une requête SQL.
On ne peut avoir que l'historique des commandes effectuées à l'aide des touches flèche haut et flèche bas.
Bonjour à tous et à toutes,
J'aurai souhaité savoir comment effectuer un retour à la ligne dans une instruction SQL via psql.
En effet, si on tape une instruction
CREATE TABLE nomdematable (
pers_id INTEGER NOT NULL,
pers_nom VARCHAR(50)
pers_prenom VARCHAR(10), --OOhps j'ai commis une erreur de syntaxe et je veux corriger la ligne pers_nom et rajouter la virgule
--
--
--
Comment effectuer cette opération sous psql.
Merci d'avance.
Sophonie.
Bonjour à tous et à toutes,
En fait le but de mon ticket était de savoir comment être sûr que le code PL/pgSQL écrit dans la console
était bien interpreté par psql.
Il faut commencer le code par un CREATE OR REPLACE FUNCTION nomdelafonction [void si c'est une procédure]
DECLARE
déclarer ses variables;
BEGIN
bloc d'instructions;
END;
Avec pgAdmin il faut une fois après avoir déclaré le langage via un createlang plpgsql nomdemabase,
clic du bouton droit sur l'icône plpgsql de l'objet LANGAGE ds le navigateur d'objet à droite -> SCRIPT CREATE
Une fenêtre s'ouvre et nous propose de commencer l'élaboration du script.
Sophonie
Bonne soirée.
Bonjour à tous et à toutes,
J'aurai souhaité savoir comment utilisé le langage PL/pgSQL au sein de l'environnement psql.
En effet, j'ai tapé CREATE LANGUAGE plpgsql et le shell m'a sorti :
plpgsql is already exist. Implicitement à la création de la base de données le langage est installé.
Comment écrire le code PL/pgSQL, sur Oracle avec SQL Developer je suis arrivé à en écrire.
Mais sous PostgreSQL je ne vois pas par où commencer.
Merci d'avance.