IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[SQL Server] Créer la copie d'une ligne


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 56
    Par défaut [SQL Server] Créer la copie d'une ligne
    Bonjour à tous,

    Je souhaite dupliquer une ligne dans une même table. Donc faire un INSERT (a,b,c) values (a,b,c). Les valeurs a,b et c sont comprises dans une ligne de la table.

    Est-ce possible de créer la copie d'une ligne? J'ai chercher une fonction mais je n'ai pas trouver.

    D'avance merci,

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 85
    Par défaut
    essai de faire un insert avec un select imbriqué

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO laTable(col1, col2)
    SELECT col1, col2 FROM laTable WHERE ... ;
    Pas de VALUES et pas de parenthèses.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 56
    Par défaut
    Ok ca marche parfaitement, mais comment puis je dupliquer une ligne alors que j'ai un identifiant qui s'incrémente automatiquement... je ne peux pas copier ce champ là. C'est dans le cas où j'ai une table composée de plus de 20 champs plutôt que de tous les écrire à la main.

    Pour ne pas retourner dans le code une fois que j'aurai ajouter un champ dans ma table.

    D'avance merci,

  5. #5
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Citation Envoyé par Médiat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO laTable(col1, col2)
    SELECT col1, col2 FROM laTable WHERE ... ;
    Si col1 est au identifiant primaire autoincrémenté alors tu ne le notes pas dans ta requête. Il sera mis en place de façon automatique par MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO laTable(col2)
    SELECT col2 FROM laTable WHERE ... ;
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 56
    Par défaut
    Oui, c'est ce que je fais pour l'instant.
    mais je souhaite passe de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TAB1 (a,b,c) SELECT a,b,c from TAB1
    à un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TAB1 SELECT * FROM TAB1 WHERE ID = 45
    Comme cela je fais seulement la copie d'une ligne sans devoir déclaré les différents champs. Donc lorsque je modifierais ma table dans le futur, je ne devrai plus modifier ma requête SQL

  7. #7
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Ce ne sera pas possible sans déclarer les champs et modifier votre application à chacune des modifications de la table.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 56
    Par défaut
    Ok merci beaucoup. Je vais passer par une fonction qui va créer la requête.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/06/2007, 17h04
  2. [VB6]créer une copie d'une ligne d'une table
    Par h82kev dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/02/2006, 16h08
  3. [SQL Server 2000] configurer ou supprimer une connexion
    Par drinkmilk dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/08/2005, 21h48
  4. [SQL Server]Recupération du résultat d'une procédure stockée
    Par navis84 dans le forum Bases de données
    Réponses: 8
    Dernier message: 04/04/2005, 20h53
  5. [SQL Server] Limiter le resultat d'une requête
    Par obiwan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/06/2004, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo