Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
lors d'une opération de maintenance sur une table de mon intranet, j'ai supprimé la clef primaire sur 2 colonnes pour créer ensuite une clef primaire sur 3 colonnes.
Cela car il me fallait ajouter des données dans la troisième colonne et créer des doublons sur l'ancienne clef primaire.
Malheureusement, j'ai effectué cette opération sur une table sans OIDS (j'ai maintenant bien saisi à quoi cela servait...).
Lorsque j'essayais de modifier des données avec pgAdminIII, cela donnait quelques comportements bizarre... puisque le système ne pouvait plus identifier les lignes auxquelles je voulais accéder.
La création de la clef primaire n'est pas possible car j'ai des doublons sur ma table, même en mettant tous les champs dans la clef primaire.
Que puis je faire pour récupérer ma table fonctionnelle ?
Je pratique le SQL sans trop de soucis, mais cela n'étant pas mon activité principale, je ne vois pas comment traiter le problème
cébé.
nota : JC,tu es toujours par là ?
Hors ligne
Petite précision, la base est en v8.3, sur serveur UBUNTU.
merci,
Cébé
Hors ligne
Bonjour,
Non, les oids ne sont pas une bonne idée. Ne vous en servez pas.
Ce que vous indiquez n'est qu'une limitation (logique) de pgadmin3, qui n'a plus de moyen unique de localiser vos enregistrements, n'ayant plus de clé primaire.
Si je résume bien, vous avez, dans votre table, quelques enregistrements en doublon (sur l'ensemble des colonnes) ?
Si c'est le cas, et que vous savez lesquels, vous pouvez encore les distinguer par le 'ctid', c'est à dire l'adresse physique de l'enregistrement dans la table.
Voici une démo (avec une seule colonne, je suis paresseux )
CREATE TABLE test (a int);
CREATE TABLE
marc=# INSERT INTO test values (1);
INSERT 0 1
marc=# INSERT INTO test values (1);
INSERT 0 1
marc=# SELECT ctid,a from test;
ctid | a
-------+---
(0,1) | 1
(0,2) | 1
DELETE FROM test where ctid='(0,1)';
DELETE 1
marc=# SELECT ctid,a from test;
ctid | a
-------+---
(0,2) | 1
Marc.
Hors ligne
Bonjour,
et... MERCI !!!!
Je suis arrivé à recrééer une clef primaire (avec mes 3 colonnes).
Il ne me reste plus qu'à chercher les éventuelles données que j'ai ... "foirées"
Au moins, la base est à nouveau utilisable !
encore une grand merci !!
cébé.
Hors ligne
Pages : 1