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

Administration SQL Server Discussion :

Comportement à l'ajout d'une nouvelle colonne


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut Comportement à l'ajout d'une nouvelle colonne
    Bonjour,

    Je ne suis pas sûre d'avoir posté au bon endroit. Si ce n'est pas le cas, je m'en excuse.

    Voilà ma question :

    Lorsqu'on ajout une nouvelle colonne dans une table, sous mySQL, le SGBD crée une nouvelle table temporaire avec la nouvelle colonne ajoute tous les enregistrements de la table source, supprime la table source et renomme la table temporaire. Cela implique qu'il faut avoir la place dhéberger deux fois les données de la table si on souhaite ajouter une colonne.

    Pour ma culture personnelle, j'aurai voulu savoir comment fonctionnait MS SQL Server dans ce cas. Quelqu'un sait ?

    Arkhena

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Vous avez plusieurs scénarios possibles pour SQL Server :

    - Vous ajoutez une colonne nullable avec une contrainte par défaut nulle:
    Le catalogue système est mis à jour et aucune autre opération est faite. Les enregistrements seront mis à jour par la suite par d'autres opérations de mise à jour.

    - Vous ajoutez une colonne nullabe avec une contrainte par défaut non nulle:
    Votre contrainte par défaut non nulle force SQL Server à mettre à jour l'ensemble des données de votre table en même temps que l'ajout de votre nouvelle colonne. Le pointeur NULL de votre nouvelle colonne est également mis à jour.

    - Vous ajoutez une colonne non nulle (et potentielelment avec une contrainte par défaut non nulle) :
    Même chose que précédemment.

    ++

  3. #3
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Merci beaucoup pour cette réponse très complète.

    J'ai du coup une question subsidiaire :
    S'il s'agit d'un ajout de colonne non nullable ou d'une colonne nullable mais avec une valeur par défaut non nulle, la table est-elle verrouillée en écriture ?

  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 : 44
    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
    Par défaut
    Bonjour,

    S'il s'agit d'un ajout de colonne non nullable ou d'une colonne nullable mais avec une valeur par défaut non nulle, la table est-elle verrouillée en écriture ?
    Attention, la propriété NULL n'est pas une valeur : cela spécifie l'absence de valeur.
    Le fait de "rendre une colonne NULLable" nous permet de ne pas spécifier de valeur pour toute ligne dans cette colonne.
    Il n'y a donc aucun intérêt à ajouter une contrainte de valeur par défaut en spécifiant NULL comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE maTable
    ADD CONSTRAINT DF_maTable_uneColonne DEFAULT (NULL) FOR maColonne
    Cela fonctionne mais c'est une aberration.

    En revanche il est vrai que la table est verrouillée dans le cas que vous décrivez

    @++

  5. #5
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Merci beaucoup, cela confirme ce que je pensais.

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

Discussions similaires

  1. Ajout d'une nouvelle colonne sur les devis et personnalisation du rapport
    Par kalidou.ba dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 28/10/2014, 11h02
  2. Ajout d'une nouvelle colonne dans une table
    Par NFHnv dans le forum Débuter
    Réponses: 4
    Dernier message: 24/01/2013, 02h38
  3. Comportement à l'ajout d'une nouvelle colonne
    Par Arkhena dans le forum Administration
    Réponses: 1
    Dernier message: 07/08/2009, 16h04
  4. Réponses: 3
    Dernier message: 31/10/2007, 11h54
  5. Réponses: 2
    Dernier message: 07/06/2006, 15h43

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