Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/03/2007, 11h23   #1
Invité régulier
 
Étudiant
Inscription : février 2007
Messages : 13
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 13
Points : 8
Points : 8
Par défaut INSERT à partir d'un SELECT avec champ SERIAL

Bonjour,

je désire dupliquer les lignes d'une table mais en incrémentant un champ de chaque ligne...

Code :
1
2
3
4
 
INSERT INTO ACTIVE_IMAGE (extension,image_id,photo, remarque, actif, famille_id,fonction,groupe_id,libelle,position,producteur_id,produit_id,url_lien) 
       SELECT extension,image_id,photo,remarque, actif, famille_id,fonction+10,groupe_id,libelle,position,producteur_id,produit_id,url_lien
       FROM   ACTIVE_IMAGE;
Ma clé primaire est image_id (SERIAL)...J'ai une erreur de duplicate key et si je retire le champ image_id j'ai une erreur de null value dans PK...

Quelqu'un peut-il m'éclairer??

Merci.
bruno.wiesen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 11h07   #2
Membre chevronné
 
Avatar de grabriel
 
Inscription : septembre 2006
Messages : 935
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 935
Points : 626
Points : 626
Salut,

Quand tu dis "si je retire le champ image_id " ta requete ressemble à ça???

Citation:
INSERT INTO ACTIVE_IMAGE (extension,photo, remarque, actif, famille_id,fonction,groupe_id,libelle,position,producteur_id,produit_id,url_lien)
SELECT extension,photo,remarque, actif, famille_id,fonction+10,groupe_id,libelle,position,producteur_id,produit_id,url_lien
FROM ACTIVE_IMAGE;
si oui ca devrai fonctionner????

Si le code qui suit fonctionne ta requete devrai passer
Code :
1
2
3
4
5
 
CREATE TABLE test (id serial NOT NULL, nom varchar);
INSERT INTO test (id, nom) VALUES (1,'zsfqsd');
INSERT INTO test (nom) SELECT nom FROM test;
SELECT id,nom FROM test;

[EDIT]
désolé mais j'ai oublié
primary key dans create table test (id serial not null, nom varchar);
C'est pour ca que ca marche.............
Généralement j'utilise des sequences et je mets nextval()

SINON t'as la doc sur les insertion

http://www.postgresql.org/docs/8.2/i...ql-insert.html

Désolé!!!

[/EDIT]
grabriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h07.


 
 
 
 
Partenaires

Hébergement Web