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

Développement SQL Server Discussion :

Modifier un champ dans toutes les tables d'une BD


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Modifier un champ dans toutes les tables d'une BD
    Bonjour
    j'utilise sql server 2008 R2 et je voudrais svp un script qui permet de modifier un champs dans toutes les tables. Exemple j'ai un code membre qui s'auto incrémente 0100000001 et je voudrais que le systeme ajoute 02 a ce code a tous les membre existants et a chaque fois qu'un nouveau membre adhere dans ma table client et toutes les autres tables ou ce champ existe.
    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Je crois comprendre que ce code membre sert de clef primaire à la table des membres, et donc de clef étrangère à toutes les tables qui s'y référent ?!?

    Si c'est le cas, vous allez au devant de graves ennuis et vous devriez revoir sans tarder votre conception.

    Pouvez-vous détaillez un peu plus le contexte ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Eclaircissement
    En fait j'ai plusieurs BD à consolider, mais ils se trouve que au départ il y a un champ région qui les différencié.
    Mais si on consolide nous risquons d'avoir plusieurs numéro de clients identiques 0100000001, 0100000001 alors pour les différencier je veux prendre les 2 derniers chiffres du code région et l'ajouter au numéro existant pour avoir par exemple : 020100000001
    Merci

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    au départ il y a un champ région qui les différencié.
    Donc il vous suffit d'utiliser cette colonne (les bases de données relationnelles SQL n'ont pas de champ) dans votre base de données cible de la consolidation.

    Si vous concaténez le code de la région avec celui du client, que se passera-t-il lorsque ce client changera de région ?
    Si vous allez dans cette direction, vous violez la première forme normale, par laquelle toutes les données doivent être atomiques et constantes dans le temps.
    D'autre part, toute recherche sera ralentie, puisqu'il sera nécessaire d'analyser la valeur de la variable. Donc en termes de performances, ce sera tout simplement horrible

    @++

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Juste consolidation
    Bonjour Merci des réponses apportées.
    Mais les BD sont sur site la BD de consolidation est juste pour traitement hors site.
    si je consolide tel quel je risque d'avoir des doublons sur les numéros de client raison pour laquelle je souhaite concaténer le numéro actuel avec les 2 derniers chiffres de la région. Si je pouvais avoir un script sql ce serait super
    Merci encore

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Ce que Hirma tente de vous dire, c'est que l'identifiant du membre doit être dénué de sens, et immuable dans le temps.

    Par conséquent, vous devez créer un nouvel identifiant (qui n'a aucun sens fonctionnel) et utiliser le couple "numéro / région" comme clé alternative (index unique)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table membre
    (
        id int identity not null primary key,
        region char(2) not null,
        numero char(10) not null,
        unique index on (region, numero)
    )
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. ajouter un champ dans toutes les tables
    Par silene dans le forum Access
    Réponses: 2
    Dernier message: 26/06/2012, 17h33
  2. Réponses: 1
    Dernier message: 06/11/2009, 17h54
  3. Réponses: 2
    Dernier message: 14/11/2008, 18h42
  4. Réponses: 7
    Dernier message: 05/11/2008, 17h33
  5. Rechercher une donnée dans toutes les tables d'une BDD
    Par TheYoMan dans le forum Paradox
    Réponses: 2
    Dernier message: 23/10/2008, 21h24

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