SQL et copie de données
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

SQL et copie de données



  1. #1
    cactus380

    SQL et copie de données


    ------

    Bonjour, est ce que quelqu'un aurait une idée d'une éventuelle commande SQL permettant de dupliquer un enregistrement d'une table en modifiant un des champs de la clé primaire ?

    Plus précisément, soit la table X avec 2 champs A et B. A étant la clé primaire.

    J'ai un enregistrement X1 ayant pour valeurs A : 1 B : 2
    Je voudrais dupliquer cet enregistrement en modifiant la valeur de A (suivant une séquence pour s'assurer que la nouvelle valeur de A ne soit pas déjà prise).

    J'ai pensé faire un truc du genre : Si la séquence est à 199
    INSERT INTO X (select 200, B from X);

    Cependant, cet ordre SQL ne sera plus bon s'il y a un alter sur X qui rajouterai éventuellement un champ ou modifierai le nom du champ B.
    En effet, mon ordre SQL sera intégré dans une classe JAVA et j'aimerai ne pas avoir à le reprendre à chaque fois que quelqu'un fait un alter sur X.

    N.B. Je ne peux pas copier la ligne puis faire un update sur A car je vais avoir une erreur de clé dupliquée...

    Merci pour vos idées

    Je reste à disposition pour toute information supplémentaire.

    -----

  2. #2
    Bluedeep

    Re : SQL et copie de données

    Bonjour

    Citation Envoyé par cactus380 Voir le message
    Bonjour, est ce que quelqu'un aurait une idée d'une éventuelle commande SQL permettant de dupliquer un enregistrement d'une table en modifiant un des champs de la clé primaire ?
    Petit détail sémantique : il n'y a pas d'enregistrements dans une table (ni de champs), seulement des lignes (et des colonnes).
    Ensuite il n'existe pas d'ordre implicie de duplication de ligne.

    Ceci dit il est aisé d'insérer une ligne en incrémentant la valeur de la PK existante (même si il est plus simple et plus logique de créer cette PK en 'IDENTITY').

    L'exemple suivant créee une table à deux colonnes, insére une ligne puis une autre en incrémentant la valeur de la PK :
    Code:
    CREATE TABLE [dbo].[T_Test2](
        [Col1] [int] NOT NULL,
        [Col2] [varchar](50) NULL,
     CONSTRAINT [PK_T_Test2] PRIMARY KEY CLUSTERED 
    (
        [Col1] ASC
    )
    )
    
    GO
    
    INSERT INTO [dbo].[T_Test]
               ([Col1]
               ,[Col2])
         VALUES
               (100
               ,'TEST_A');
    
    INSERT INTO [dbo].[T_Test]
               ([Col1]
               ,[Col2])
            select (max(Col1) + 1) as Col1, 'TEST_B' as Col2 from [dbo].[T_Test]
    Dernière modification par Bluedeep ; 23/07/2015 à 09h44.

  3. #3
    Bluedeep

    Re : SQL et copie de données

    Erratum : remplacer T_TEST2 par T_TEST.

    Citation Envoyé par Bluedeep Voir le message
    Code:
    CREATE TABLE [dbo].[T_Test](
        [Col1] [int] NOT NULL,
        [Col2] [varchar](50) NULL,
     CONSTRAINT [PK_T_Test] PRIMARY KEY CLUSTERED 
    (
        [Col1] ASC
    )
    )
    
    GO
    
    INSERT INTO [dbo].[T_Test]
               ([Col1]
               ,[Col2])
         VALUES
               (100
               ,'TEST_A');
    
    INSERT INTO [dbo].[T_Test]
               ([Col1]
               ,[Col2])
            select (max(Col1) + 1) as Col1, 'TEST_B' as Col2 from [dbo].[T_Test]

Discussions similaires

  1. Excel: comparaison de cellules et copie de données entre 2 classeurs
    Par invitedb15c8e5 dans le forum Logiciel - Software - Open Source
    Réponses: 15
    Dernier message: 23/05/2015, 15h46
  2. copie DD de données sur un autre DD
    Par invite9df454f9 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/03/2011, 21h57
  3. Copie de données illisibles (DVD)
    Par Orphée dans le forum Matériel - Hardware
    Réponses: 5
    Dernier message: 06/11/2010, 15h02
  4. copie automatique de données
    Par invite696dcbb1 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 22/11/2006, 13h08