Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#51 PHP » requête récursive with » 31/03/2011 15:03:10
- chris0938
- Réponses : 80
Bonjour,
j'ai une table domain(id,nom,parent) avec parent=id. Je souhaite faire une requête récursive pour récupérer les enfant d'un id précis.
Avec oracle on avait connect by prior. En faisant des recherches je suis tombé sur with recursive. J'ai fait un essaye:
WITH recursive ENFANT(nom,id) as
(
select nom,id
from domaine
where id='33'
union all
select nom,id
from domaine d,enfant e
where d.id=e.parent
)
select nom,id from enfant;mais j'obtiens cette erreur
ERROR: syntax error at or near "WITH" at character 1
LINE 1: WITH recursive ENFANT(nom,id) as
est ce que ma requête est fausse ou il y a un autre probléme?
merci d'avance pour toute précision
ps: version postgresql 8.4.2.
#52 Re : PL/pgSQL » trigger historisation des modifications sur une base de données » 07/02/2011 15:10:31
merci beaucoup pour votre aide.
#53 Re : PL/pgSQL » trigger historisation des modifications sur une base de données » 07/02/2011 14:47:13
je viens de trouver. je dois utiliser new.id ou old.id selon le cas.
merci
#54 Re : PL/pgSQL » trigger historisation des modifications sur une base de données » 07/02/2011 12:43:48
ok. j'ai essaye avec tg_relname est cela fonctionne.
la seule chose qui ne fonctionne pas c'est l'id de l'enregistrement modifié.
je m'explique:
insert into profil (id,libelle,datecreation) values ('PROF649302','gestionnaire de site',now());
INSERT 0 1
select * from histo;
id | typemod | datemodif | usermodif | idmodif | tablemodif
---------+-----------+---------------+------------+---------+------------
histo453 | I | 2011-02-07 | postgres | 152476 | profilidmodif vaut 152476 alors que je voudrai que ca soit prof649302. je ne sais pas si c'est bien possible.
voici la partie de la fonction qui nous intéresse ici
elsif (TG_OP='INSERT') then
insert into histo_uliss select 'histo453','I',now(),user,TG_Relid,TG_RELNAME;
return new;merci d'avance pour toutes idées.
ps: une petite question qui n'a rien avoir: quand on insert et que tout se passe bien on a ce message
insert 0 1que signifie 0 1?
#55 Re : PL/pgSQL » trigger historisation des modifications sur une base de données » 07/02/2011 12:07:10
bonjour,
j'ai voulu mettre en place le trigger mais quand j'ai fait un insert sur une table ou le trigger porte j'ai eu ce message d'erreur:
error: column "tg_table_name" does not exist
context: sql statement "insert into histo select 'I',now(),user,$i,TG_table_name
pl/pgsql function "histo_audit" line 9 at sql statementla ligne 9 correspond a ceci :
elsif (TG_OP='INSERT') thenj'ai oublie de préciser que postgresql est la version 8.4. est ce que cela a un rapport?
merci d'avance.
#56 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 04/02/2011 15:08:17
finalement j'ai réussi a me connecter.
j'ai taper
pg_ctl start -l logfile -D /var/lib/pgsql/data
posmaster startingaprés j'ai essaye de me connecter sur template1
psql template1et cela a fonctionner
merci beaucoup pour votre aide.
#57 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 04/02/2011 14:42:16
Zut.
Ne sachant pas trop ce qui est utile je vais tout mettre:
je suis allé voir logfile et dedans il y avait ceci:
LOG: logger shutting downensuite dans pg_log et j'ai pris le dernier fichier postgresql-2010-11-03_000000.log
LOG: received fast shutdown request
LOG: shutting down
LOG: database system is shut down
LOG: logger shutting downvoila si c'est dans d'autre fichier pouvez vous me donnez leur nom? merci
#58 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 04/02/2011 11:09:24
Bonjour,
je reviens sur le sujet.
précédemment j'avais écrit:
/etc/init.d/postgres startet j'avais eu une erreur. enfait j'avais mal écris c'est pas postgres mais postgresql.
donc je l'ai relance correctement mais à présent j'ai ceci:
/etc/init.d/postgresql start
Starting postgresql service: [FAILED]est ce le même probléme ou autre chose?
merci d'avance.
#59 Re : PL/pgSQL » trigger historisation des modifications sur une base de données » 04/02/2011 10:40:15
bonjour,
merci de votre réponse. est ce mieux d'utiliser tg_table_name a la place de tg_relname?
je vais regarde aller voir tablelog.
#60 Re : PL/pgSQL » trigger historisation des modifications sur une base de données » 03/02/2011 16:58:14
Bonjour,
merci pour votre réponse. votre lien ne fonctionne pas mais j'ai celui ci qui correspond à ce que je souhaite faire. http://docs.postgresqlfr.org/8.0/plpgsql-trigger.html.
est ce que ceci est juste
create function histo_audit() returns trigger as $histo$
begin
--ajoute une ligne dans la table histo pour refleter l'operation réalisé sur les tables
--utilise la variable spéciale TG_OP pour cette opération
--
if(TG_OP='DELETE') then
insert into histo_uliss select 'D',now(),user,TG_Relid,TG_Relname;
return old;
elsif (TG_OP='UPDATE') then
insert into histo_uliss select 'U',now(),user,TG_Relid,TG_Relname;
return new;
elsif (TG_OP='INSERT') then
insert into histo_uliss select 'I',now(),user,TG_Relid,TG_Relname;
return new;
end if;
return null; -- le résultat est ignoré car il s'agit d'un déclencheur AFTER
end;
$histo$ language plpgsql;
CREATE TRIGGER histo
AFTER INSERT or Update or DELETE on utilisateur
for each row execute procedure histo_audit();#61 PL/pgSQL » trigger historisation des modifications sur une base de données » 02/02/2011 12:34:45
- chris0938
- Réponses : 11
Bonjour,
Je souhaiterai mettre en place un trigger qui insert des lignes dans une table d'historique dès qu'un utilisateur fait des modifications sur la base.
J'aimerai pouvoir récupère le nom de la table modifié, l'identifiant de la ligne, l'utilisateur qui a fait cette modification, quel est le type de la modification (update,delete,insert), et la date.
Pour le moment, je n'ai que la date que je sais comment récupére mais le reste je ne sais pas.
Est ce possible de récupère ces informations?
Merci d'avance pour tout informations.
Chris
#62 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 16:59:48
une dernière question comment s'appelle le fichier de démarrage ?
#63 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 16:22:20
merci pour votre réponse.
le probléme c'est que la personne qui la installé n'est plus présente mais je sais que postgres a été installer avec rpm.
Et malheureusement je n'ai pas beaucoup de connaissance sur Linux. je vais voir avec un de mes collègues.
merci de m'avoir aidé et diriger sur le vrai probléme.
#64 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 15:57:17
je ne comprends pas.
j'ai utilisé postgres de mai à août correctement sans aucun souci et maintenant plus rien et le problème viendrait que le fichier est mal configuré alors qu'avant il était bon!!
#65 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 15:46:34
que voulez vous dire par "où postgresql... est votre bon nom de service"?
j'ai fait
/etc/init.d/postgres startJ'ai ce message d'erreur:
postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.#66 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 15:32:27
ok. comment je fais pour que le processus existe?
#67 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 15:24:43
J'ai écrit la commande que vous m'avez donné et voila ce que j'obtiens:
*** 14055 13639 0 14:23 pts/0 00:00:00 grep postgresj'ignore ce que cela signifie.
#68 Re : Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 15:12:49
merci pour votre réponse.
Comment se fait il que la base se soit éteinte presque du jour au lendemain?
comment puis je la redémarre?est ce la même méthode que pour apache (etc/httpd restart/start)?
#69 Installation » impossible d'ouvrir une base,message d'erreur contenant /tmp/.s.PGSQL. » 24/01/2011 15:00:30
- chris0938
- Réponses : 20
Bonjour,
Ce matin j'ai voulu me connecter (avec putty) sur postgres mais voila le message que j'ai eu:
su postgres psw:***
psql template1
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?Je ne comprends pas pourquoi cela ne fonctionne plus.
Certes cela fait deux mois que personne c'était connecté à postgres mais rien n'a été modifié à ce niveau là.
la version de postgres est 8.4.2, sur redhat.
merci d'avance.
chris.
#70 Re : Migration » Migration Oracle vers Postgres » 12/08/2010 13:15:08
merci pour ta réponse.
#71 Migration » Migration Oracle vers Postgres » 12/08/2010 12:05:35
- chris0938
- Réponses : 2
Bonjour,
Nous sommes entrain de faire une migration de notre site sous postgresql et nous avons quelques requêtes avec ceux-ci:
CONNECT BY PRIOR id = ''
START WITH id = '')mais cela ne fonctionne pas.
est ce qu'il existe une équivalence?
Et si non comment faire sans cela?
merci d'avance
#72 Re : Migration » Migration Mysql vers postgresql » 02/08/2010 15:15:43
je te remercie.
#73 Migration » Migration Mysql vers postgresql » 02/08/2010 14:21:27
- chris0938
- Réponses : 2
Bonjour,
je souhaite créer ma base de données sur postgresql qui se trouve actuellement sous mysql.
Mais j'ai un problème sur une table a cause d' un UNIQUE INDEX:
CREATE TABLE matable(
ID CHAR(10) NOT NULL,
attribut2 CHAR(10) NULL,
attribut3 CHAR(10) NULL,
attribut4 CHAR(10) NULL,
PRIMARY KEY(ID),
UNIQUE INDEX PROGRAMMATION_UNIQUE(attribut2 ,attribut3 ,attribut4)
);et voila l'erreur que j'obtiens:
Erreur ! : SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "UNIQUE" LINE 7: UNIQUE INDEX PROGRAMMATION_UNIQUE(attribut2 ,attribut3 ,attribut4... ^merci par avance.
#74 Re : PHP » equivalent IF NOT EXISTS » 21/07/2010 16:11:02
d'accord. merci bien pour cette information.
#75 PHP » equivalent IF NOT EXISTS » 21/07/2010 16:03:17
- chris0938
- Réponses : 2
Bonjour,
je suis entrain de créer une base de données sous postgresql via pdo/php et j'aimerai tester si les tables existent avant la création :
CREATE TABLE IF NOT EXISTS matable(
....
);la c'est sous mysql. est ce qu'il existe un équivalent pour postgres?
merci d'avance