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

UPDATE et clé primaire double

Technique - général | UPDATE et clé primaire double

Par syracine le 05/07/2007 - 12:40

Bonjour Ă  tous,

Voici un problème qui me semble bien simple, mais que je n'arrive pas à résoudre.
J'ai une table qui contient des adresses. J'ai une clé primaire. Lorsque j'UPDATE une adresse, je reçois le message 'duplicate key violates unique constraint "adresses_pkey"' où 'adresses_pkey' est la contrainte de clé primaire.

Voici ma table:
CREATE SEQUENCE seq_adresse START 1;

CREATE TABLE adresses
(
id_adresse int4 NOT NULL DEFAULT nextval('seq_adresse'::regclass),
anc_adresse varchar,
geom geometry,
preciv varchar,
numciv int4,
sufciv varchar,
predir int4,
pretype int4,
art int4,
nomrue varchar,
suftype int4,
sufdir int4,
numapp int4,
sufapp varchar,
mun int4,
prov int4,
pays varchar,
code char(6),
arr int4,
adresse varchar,
CONSTRAINT adresses_pkey PRIMARY KEY (id_adresse),
CONSTRAINT adresses_adresse_unique UNIQUE (adresse),
CONSTRAINT enforce_dims_geom CHECK (ndims(geom) = 2),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'POINT'::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (srid(geom) = 4269)
)
WITHOUT OIDS;
ALTER TABLE adresses OWNER TO igreffe;

La table contient au moins une ligne du genre

| id_adresse | anc_adresse | geom | preciv | numciv | sufciv | predir | pretype | art | nomrue | suftype | sufdir | numapp | ... | adresse |
+------------+-------------+------+--------+--------+--------+--------+---------+-----+--------+---------+--------+--------+.....+---------+
| 170 | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | labrie | 0 | 0 | NULL | ... | LABRIE; |

et voici la requête qui cause problème:

UPDATE adresses SET pretype=1, ... WHERE id_adresse=170;

À noter que la séquence 'seq_adresse' a comme valeur 2030, soit une valeur qui n'est pas enregistrée dans la table 'adresses'.

Si quelqu'un veut bien m'aider, je tourne en rond...

Cordialement

Sylvain

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.

RE: UPDATE et clé primaire double

syracine/ = 5 Juillet, 2007 - 15:41

Je commence à croire que le problème vient de mes données. J'ai fait des tests avec d'autres valeurs pour 'id_adresse' et cela fonctionne!

J'ai fait un VACCUUM FULL, sans résultat.

Finalement, j'ai effacé cette ligne de données et je l'ai insérer de nouveaux et maintenant, je peux updater ma ligne 170. Bizarre...

J'ai lu qu'il y a possibilité de bloquer (LOCK) des données, mais je n'utilise pas cela dans mon application. J'aimerais avoir plus d'informations sur cette fonction.

merci.


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