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

#51 Re : Général » modifier la valeur d'une sequence dans un trigger » 13/12/2011 15:17:30

Salus, merci vos efforts, mais le problemes est plus complexe que ca, dans mon insert,
INSERT INTO asso_orders_hole VALUES ('roul01341', '22_08-RN-128', 1022, 'ibaradji', '2011-10-06 11:44:35-04',  'ibaradji', '2011-10-06 16:00:00-04', false, 181.600006, 181.600006);

cette insert vient de la roulotte 01 d'ou le 'roul01341',

et ausii, je pourrai avoir aussi 'roul02341' provenant de la roulotte 02 et ainsi de suite.
l'indice 2341 est la valeur de la sequence asso_orders_hole_ass_id_seq dans la roulotte 01.
quand je recoit les backup provenant des roulottes, j'execute des centraines d'insert, mais le probeleme est que ca ne modifie pas la valeur de la sequence asso_orders_hole_ass_id_seq dans ma bd centrale. si la valeur de cette sequnce etait chez mois a 1500 et que je fais un backup et que leur transfert, ils vont executer un script qui va supprimer, creer puis restorer leur bd a partir du backup que je leur envois. tu vois la ou est le probleme? la valeu de leur sequence va revenir a 1500 alors alors qu'il devrait etre a 2342.
bon bref, s'il n'existe en postgres un moyen de faire un update sur une sequence, je pense que il est temps que cela soit revus sur les prochaines version.

#52 Re : Général » modifier la valeur d'une sequence dans un trigger » 12/12/2011 18:57:37

Salut,
lors de cette discussion: http://forums.postgresql.fr/viewtopic.php?id=1747
tu m'avais fait cette suggestion qui marche bien, mais mon probleme est que quand je fais les insert des donnees provenant des roulottes manuellement, les sequences ne s'incremente pas et cela peut creer des problemes lorsque j'envois un backup de la base principale dans une roulotte.
exemple si dans la roulotte r1 par exemple, la valeur d'une sequence est a 300, et que dans la bd principale, cette valeur est a 250.
si j'envois un backup de la bd, ils auront des erreurs lors des ajouts.

merci

#53 Re : Général » modifier la valeur d'une sequence dans un trigger » 12/12/2011 16:53:09

Salut les gards,
pour la 1ere proposition pour Gleu,voici ce que j'ai comme reponse:
ERROR: control reached end of trigger procedure without RETURN
SQL state: 2F005
Context: PL/pgSQL function "next_sequence"

Marc, en fait, je ne peux pas recuper cette valeur, je souhaite juste modifer la valeur de la sequence comme si je faisais un update dans la fonction, mais le probleme, on ne peut pas faire de update sur les sequences et ne rien retourner.

#54 Général » modifier la valeur d'une sequence dans un trigger » 09/12/2011 21:48:15

baradji
Réponses : 14

Salue, je souhaite utiliser une sequence dans un trigger.
voici mon code

CREATE OR REPLACE FUNCTION next_sequence()
  RETURNS trigger AS $assordhole_trig$
BEGIN
SELECT nextval('asso_orders_hole_ass_id_seq');
END;
$assordhole_trig$
LANGUAGE plpgsql;
 
----------------

CREATE TRIGGER assordhole_trig AFTER INSERT ON asso_orders_hole
    FOR EACH ROW EXECUTE PROCEDURE next_sequence();

----------
A l'execution de ce insert,
INSERT INTO asso_orders_hole VALUES ('22_08-RN-128', 1022,  '2011-10-06 16:00:00-04', false, 181.600006, 181.600006);

j'ai le message d'erreur suivant:

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function "next_sequence" line 2 at SQL statement


--

Quelq'un pourra t'il me dire comment modifer la valeur de la sequence et ne rien retourner comme valeur?

Merci d'avance

#55 Re : Général » Utilisation de clés primaires dans plusieurs bases de donnees » 15/11/2011 16:07:35

Salut,
J'ai testé la methode de Gleu hier sur des tables, ca semble aller, mais le probleme se situe sur les cles etrangers ou il ya assez de redondances de id_roulotte.
je vais aussi tester le methode de Marc qui me semble aussi interessant et qui est proche de ma solution que j'ai proposé.

#56 Général » Utilisation de clés primaires dans plusieurs bases de donnees » 14/11/2011 15:57:38

baradji
Réponses : 3

Bonjour,
je ne sais pas comment remedier a mon probleme.

dans mon entreprise, on a des roulottes qui vont dans des zones ou ils n'existent pas de connexion internet.
sur chaque roulotte, on a installé une application avec une base de donnees postgresql pour saisir des donnees sur le terrain.
et au bureau, j'ai la base de donnees centrale avec mon application web que je developpe au jour le jour en tenant compte des besoins de l'entreprise.
Cette base de donnees contient a un moment donnees des informations que les bases sur les roulottes ne contient pas et vis versa.

mon problemes se resume en un mot : connent interchanger les données entre ces differentes entités en un click sans saisir a la main?

Pour l'instant, j'utilise dans certaines tables des clés primaire auto-increment, ce qui crée un probleme quand je recupere les données provenant des roulottes pour les inserer dans ma base ou vis versa.
j'ai reflechi beaucoup sur le probleme, et je suis arrivé qu'il ne faut pas utilisé de clé auto-increment dans ma base de données contenant 30 tables.
et voici la solution que j'ai immaginé: utiliser comme clé: NUMERO_ANNEE-MOIS-JOUR-HEURE-MINUTE-SECONDE

dans la roulotte 3 par exemple:un exemple de clé serait: r3_20111113085122
Je souhaite utiliser cette composition de clé pour remplacer toute les cles auto-increments.

Je souhaite avoir vos avis et suggestions.

MERCI

#57 Re : Général » Creation d'un dump de postgresql depuis une application web » 14/10/2011 16:57:40

ok, je vais voir du cote de pgpass.conf comme vous aviez souhaité.
Merci a vous Gleu, kenrio, rjuru

#58 Re : Général » Creation d'un dump de postgresql depuis une application web » 14/10/2011 16:55:06

Desole pour la valeur de retour, je pense que ca retourne 0, donc c'est correcte.
donc, mon probleme est mainteant d'ordre securutaire.

#59 Re : Général » Creation d'un dump de postgresql depuis une application web » 14/10/2011 16:49:42

ca semble marcher avec pg_hba mais sans creer d'utilisateur,
j'ai modifié la ligne
host    all             all             127.0.0.1/32            md5
par
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
puis redmarer le serveur.
mon backup est creer comme souhaité, mais je crains une faille de securite et aussi j'ai un message d'erreur
------------------
l'execution s'est mal passe
Warning: main() [function.main]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for '-4.0/DST' instead in C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\tests\backup4.php on line 7

Fatal error: Call to undefined function write_file() in C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\tests\backup4.php on line 7
----------------
le message "l'execution s'est mal passe" signifie la variable $retour n'a pas ete cree. je ne sais pas pourquoi


voici mon nouveau code
--------
<?PHP
$my_file = 'C:\projet_conception_bd\3_livrables\sauvegardes\fichier_message.txt';
$fp = fopen($my_file, "wb");
chdir("c:\Program files\PostgreSQL\9.0\bin");
$message = system('pg_dump --host 127.0.0.1 --port 5432 -U postgres --format custom -f C:\projet_conception_bd\3_livrables\sauvegardes\backupDB_wind_22.backup db_pk_v4', $retour);
if(!$retour) echo 'l\'execution s\'est mal passe';
write_file($my_file, $message);
?>

#60 Re : Général » Creation d'un dump de postgresql depuis une application web » 14/10/2011 15:17:44

oui, c'est vrai,le fichier log d'appache, on a
pg_dump: [archiver (db)] connection to database "db_pk_v4" failed: fe_sendauth: no password supplied

je vais ajoute le mot de passe pour voir

#61 Re : Général » Creation d'un dump de postgresql depuis une application web » 14/10/2011 15:03:00

Salut Gleu,
voici la derniere modif
<?PHP
chdir("c:\Program files\PostgreSQL\9.0\bin");
$message = system('pg_dump --host 127.0.0.1 --port 5432 -U postgres --no-password --format custom -f C:\projet_conception_bd\3_livrables\sauvegardes\backupDB_wind_19.backup db_pk_v4', $retour);
if(!$retour) echo 'l\'execution s\'est mal passe';
else echo $retour;
echo '<br>'.$message;
?>

mais il n'y rien afficher pour le message de retour $message.

#63 Re : Général » Creation d'un dump de postgresql depuis une application web » 14/10/2011 14:50:46

voici ma derniere modif
<?PHP
chdir("c:\Program files\PostgreSQL\9.0\bin");
system('pg_dump --host 127.0.0.1 --port 5432 -U postgres --no-password --format custom -f C:\projet_conception_bd\3_livrables\sauvegardes\backupDB_wind_19.backup db_pk_v4', $retour);
if(!$retour) echo 'l\'execution s\'est mal passe';
else echo $retour;
?>
ca m'affiiche 1 comme sortie, mais j'ai toujours un fichier vide

#64 Général » Creation d'un dump de postgresql depuis une application web » 14/10/2011 14:15:17

baradji
Réponses : 19

Salut,
je plante depuis 2 jour sur ce probleme.
je souhaite faire un dump de postgresql depuis mon application web.

voici mon code
<?PHP
chdir("c:\Program files\PostgreSQL\9.0\bin");
system('pg_dump --host 127.0.0.1 --port 5432 -U postgres  --format custom --blobs -f C:\projet\sauvegardes\backupwind_19.backup db_pk_v4');
?>
quand je lance la page, ca me cree un fichier vide. et pourtant le sript
pg_dump --host 127.0.0.1 --port 5432 -U postgres  --format custom --blobs -f C:\projet\sauvegardes\backupwind_19.backup db_pk_v4
marche bien avec MSDOS et me cree le dump de ma base dans le repertoire C:\projet\sauvegardes\.

Quelqu'un a une solution?

#65 PHP » comment faire un dump de la database avec php? » 14/10/2011 14:11:52

baradji
Réponses : 1

Salut,
je plante depuis 2 jour sur ce probleme.

voici mon code
<?PHP
chdir("c:\Program files\PostgreSQL\9.0\bin");
system('pg_dump --host 127.0.0.1 --port 5432 -U postgres  --format custom --blobs -f C:\projet\sauvegardes\backupwind_19.backup db_pk_v4');
?>
quand je lance la page, ca me cree un fichier vide. et pourtant le sript
pg_dump --host 127.0.0.1 --port 5432 -U postgres  --format custom --blobs -f C:\projet\sauvegardes\backupwind_19.backup db_pk_v4
marche bien avec MSDOS et me cree le dump de ma base dans le repertoire C:\projet\sauvegardes\.

Quelqu'un a une solution?

#66 Re : Installation » HP Device Manager : FATAL: no pg_hba.conf entry for host "::1", user » 05/10/2011 16:59:26

Salut cher ami,
voila la solution que jài trouvé, ca marche nikel

local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# add by ismaila
host    all             all             192.168.7.0/24          md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#modif ismaila
hostssl all             all             192.168.7.0/24          md5
hostssl all             all             ::ffff:192.168.0.0/120  md5

#67 Re : Installation » HP Device Manager : FATAL: no pg_hba.conf entry for host "::1", user » 20/09/2011 20:25:48

Bonjour,
j'ai le meme probleme, cette ligne existe, pas ca affiche la meme erreur. j'ai ce probleme apres avoir reinstaller entreprise db.
voila le contenu de mon fichier pg_hba

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

#68 Re : Général » overlaps sur des numeric » 13/09/2011 16:24:23

voila, j'ai mis en place une fonction pour les overlaps sur les numeric avec valeur de retour un boolean. j'espere que cela va servir a d'autres

CREATE OR REPLACE FUNCTION "public"."func_overlap_hole" (varchar, numeric,numeric)
RETURNS BOOLEAN AS $$
DECLARE
mon_record BOOLEAN;
hole_id ALIAS FOR $1;
hole_start ALIAS FOR $2;
hole_end ALIAS FOR $3;
BEGIN
    SELECT
    CASE WHEN
        (
             ((SELECT min(met_from) from meters WHERE met_hol_id = hole_id) > hole_start)
              AND
              ((SELECT min(met_from) from meters WHERE met_hol_id = hole_id) >= hole_end)
        )
           OR
           (
            ((SELECT max(met_to) from meters WHERE met_hol_id = hole_id) ) <= hole_start
            AND
            ((SELECT max(met_to) from meters WHERE met_hol_id = hole_id) ) < hole_end
        )
    THEN TRUE
    ELSE FALSE END into mon_record;
    RETURN mon_record ;
END
$$
LANGUAGE 'plpgsql'
SECURITY DEFINER;

#69 Général » overlaps sur des numeric » 12/09/2011 16:18:25

baradji
Réponses : 2

Salut,
je souhaite utiliser le principe de overlaps sur des nombres reals, mais apparemment, overlaps ne marche que sur les dates.
est ce que quelqu'un pourra me donner une indice pour resoudre ma requete ci-dessous?

SELECT (257.70::real , 283.20::real) OVERLAPS (min(met_from) , max(met_to) )
from meters WHERE met_hol_id = '7_GAR-09-02'


resultat:
ERROR: function pg_catalog.overlaps(real, real, real, real) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.


Merci

#70 Re : PL/pgSQL » Union Multiple » 12/11/2010 16:08:27

Merci beaucoup Gleu et aussi Marc.
votre contribution m'a beaucoup aidé à avancer dans mon projet.
j'ai demandé à mes chefs de passer à une version supérieure de postgresql.
que me conseiller vous?
on est 8.1, faut il passer à 8.2 ou 8.3 ou supérieurs?

Merci

#71 Re : PL/pgSQL » Union Multiple » 11/11/2010 15:48:47

Salut,
Merci pour ta reponse, j'ai essayé ça aussi, mais lorsque on met cela, le programme genere des erreurs à la compilation.

ERROR:  loop variable of loop over rows must be record or row variable at or near "LOOP"
LINE 8: ...ELECT rab_id FROM ref_abs_gipssi_kronos ORDER BY rab_id LOOP

#72 Re : PL/pgSQL » Union Multiple » 11/11/2010 15:03:24

salut,
je voulais utiliser record comme ceci

CREATE OR REPLACE FUNCTION "public"."absence_export_fonc8" (
  integer,
  integer
)
RETURNS SETOF "public"."absence_export_type1" AS
$body$
DECLARE
mon_record absence_export_type1;
annee ALIAS FOR $1;
mois ALIAS FOR $2;
compteur record;
BEGIN 
      FOR compteur IN (SELECT (rab_id) FROM ref_abs_gipssi_kronos ORDER BY rab_id) LOOP

mais quand j'execute la requete,ca me ressort l'erreur suivant

ERROR:  operator does not exist: smallint = record
HINT:  No operator matches the given name and argument type(s). You may need to add explicit type casts.

J'utilise postgresql 8.1.quand je fais des castes, ca ne fonctionne pas

#73 Re : PL/pgSQL » Union Multiple » 11/11/2010 14:57:39

Merci Marc, ton exemple m'a bien inspiré, voici que je j'ai fais,ca marche bien.

CREATE OR REPLACE FUNCTION "public"."absence_export_fonc7" (
  integer,
  integer
)
RETURNS SETOF "public"."absence_export_type1" AS
$body$
DECLARE
mon_record absence_export_type1;
annee ALIAS FOR $1;
mois ALIAS FOR $2;
compteur SMALLINT;
BEGIN 
      FOR compteur IN 1..(SELECT count(rab_id) FROM ref_abs_gipssi_kronos) LOOP
       FOR mon_record IN   
          (SELECT s.csa_id, s.csa_matricule, s.csa_nom, s.csa_prenom, k.rab_libelle_gipssi,
          To_char (ap.apa_act_date, 'DD/MM/YYYYA') as date_abs,
          To_char (ap.apa_act_date, 'YYYY') as date_acquisition
          From com_salaries s, act_prevision_activites ap, ref_abs_gipssi_kronos k
          where ap.apa_csa_id = s.csa_id
          and EXTRACT(YEAR FROM ap.apa_act_date)=annee
          And EXTRACT(MONTH FROM ap.apa_act_date) =mois
          And ap.apa_act_am = k.rab_code_kronos
          And k.rab_id = compteur and k.rab_util =TRUE
          And s.csa_mode_facture = 0) LOOP
            RETURN NEXT mon_record ;
          END LOOP;

          FOR mon_record IN
          (Select s.csa_id, s.csa_matricule, s.csa_nom, s.csa_prenom, k.rab_libelle_gipssi,
          To_char (ap.apa_act_date, 'DD/MM/YYYYP') as date_abs,
          To_char (ap.apa_act_date, 'YYYY') as date_acquisition
          From com_salaries s, act_prevision_activites ap, ref_abs_gipssi_kronos k
          where ap.apa_csa_id = s.csa_id
          and EXTRACT(YEAR FROM ap.apa_act_date)=annee
          And EXTRACT(MONTH FROM ap.apa_act_date) =mois
          And ap.apa_act_pm = k.rab_code_kronos
          And k.rab_id = compteur and k.rab_util =TRUE
          And s.csa_mode_facture = 0) LOOP
            RETURN NEXT mon_record ;
          END LOOP;    
   END LOOP;
END
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER;

#74 Re : PL/pgSQL » Union Multiple » 09/11/2010 15:16:07

Salut Marc,
Comme expliqué dans mon message precedent,j'ai plusieurs union a faire dans une fonction pl-pgsql.
pour le moment, ca marche car je fais l'union de tous les select.mais par le futur ,on risque de perdre des infos car le nombre peut augmenter.
j'aimerai savoir simplifier ce code en utilisant une boucle qui varie par exemple de 1 à 20.

Merci

#75 Re : PL/pgSQL » recherche multi champs » 09/11/2010 14:08:50

Bonjour,
j'aimerai bien savoir si la reponse de Marc Cousin marche chez vous car ça ne marche pas chez moi.j'ai postgresql 8.1
voici l'erreur renvoyé:

ERROR:  syntax error at or near ":"
LINE 1: select * from recherche_mot WHERE recherche_mot:text ~ 'BARK...
                                                       ^
To use type conversion operator (::) turn off the 'Allow using of parameters in query text' option on Tools tab of Environment Options dialog or double colon symbols.

Pied de page des forums

Propulsé par FluxBB