Vous n'êtes pas identifié(e).
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.
merci beaucoup pour votre aide.
je viens de trouver. je dois utiliser new.id ou old.id selon le cas.
merci
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?
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.
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.
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
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.
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.
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();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
une dernière question comment s'appelle le fichier de démarrage ?
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.
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!!
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.ok. comment je fais pour que le processus existe?
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.
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)?
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.
merci pour ta réponse.
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
je te remercie.
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.
d'accord. merci bien pour cette information.
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