PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Commande INSERT n'aboutit pas si la table vient juste d'être créée

Technique - général | Commande INSERT n'aboutit pas si la table vient juste d'être créée

Par matg le 12/09/2006 - 12:11

Bonjour,

Lors de l'execution des requêtes suivantes, la commande INSERT ne se termine pas sauf si elle est exécutée quelques minutes après la création de la table. Comment expliquer ce temps de latence?

La requête CREATE permet de créer une table avec le nombre d'occurences d'un produit (id1) pour un client (id2) possédant l'attribut 'ABCD'.
La requête INSERT permet d'enrichir cette table en ajoutant les occurences nulles, ie. les produits qu'un client n'a pas acheté alors que d'autres du groupe 'ABCD' l'on fait. Cela est fait en selectionnant le produit cartésien entre les attributs id1 et id2 et en y ottant (EXCEPT) les lignes dont le couple (id1,id2) est déja présent... J'espère être assez clair.

Ci-dessous les 3 requêtes: le DROP et le CREATE fonctionnent très bien mais pas la commande INSERT qui ne se termine pas si elle est exécutée immédiatement après le CREATE. Par contre si elle est exécutée quelques minutes (~5min) plus tard alors la requête aboutit en quelques secondes.

Autre remarque, si le drop/create/insert est remplacé par un delete/insert/insert alors cela fonctionne mais malheureusement cette solution n'est pas envisageable. Enfin la création de la table en mode "Temporaire" ne change pas le problème.

Merci de votre aide

-----------------------------------------
drop table maTable;

create table maTable as (
select id1,id2,count(*)
from table1
where cle = 'ABCD'
group by id1, id2
order by id2,id1);

insert into maTable (select * from
((select a.id1 ,b.id2 ,0
from maTable a, maTable b
group by a.id1,b.id2
order by b.id2,a.id1)
EXCEPT
(select c.id1 ,c.id2 ,0
from maTable c
))as tt;
-----------------------------------------

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Bonjour Pourriez vous pré

Christophe Chauvet/ = 13 Septembre, 2006 - 14:48

Bonjour

Pourriez vous préciser l'outil avec lequel vous lancer ces requêtes ?

Cordialement.

Christophe Chauvet
KrysKool.org


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.