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

MS SQL Server Discussion :

activation/désactivation de la propriété "identity" d'un champ pour initialisation


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut activation/désactivation de la propriété "identity" d'un champ pour initialisation
    Bonjour,

    J'ai besoin d'initialiser une base (sql2k5) avec des données initiales. J'ai ainsi créé un script d'initialisation pour le jour de la mise en service. Un problème se pose avec des champs clef primaire de type identity (auto-incrémentés) : il n'est pas possible de forcer leur valeur. Or, si je laisse la base générer ces identifiants, les valeurs ainsi créées ne seront pas les mêmes qu'initialement et les clefs étrangères d'autres tables pointant sur ce champ ne seront plus en accord.
    La seule solution que j'ai trouvée passe par des manips manuelles :
    .créer mes tables,
    .supprimer la propriété identity du champ clef à l'aide de Sql Server Management Studio Express
    .insérer les données d'initialisation,
    recréer la propriété identity du champ clef à l'aide de Sql Server Management Studio Express

    Comment faire ça en SQL? J'ai beau éplucher la doc, cela n'a pas l'air possible.
    Serait-il possible de faire cela autrement (à part la restauration d'un backup d'init)?

    Cordialement.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 46
    Par défaut Re
    Bonjour,
    Tu n'es pas obligé de supprimer les identity en création. Au contraire, crées ta base "normallement" et utilise, au début des block d'insert sur les tables avec identity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY_INSERT <NOM DE LA TABLE> ON
    Puis une fois le block passé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY_INSERT <NOM DE LA TABLE> OFF

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    Citation Envoyé par phoenix38
    Bonjour,
    Tu n'es pas obligé de supprimer les identity en création. Au contraire, crées ta base "normallement" et utilise, au début des block d'insert sur les tables avec identity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY_INSERT <NOM DE LA TABLE> ON
    Puis une fois le block passé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY_INSERT <NOM DE LA TABLE> OFF
    Il faut croire que je n'avais pas assez RTFM
    Merci beaucoup

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

Discussions similaires

  1. [MOSS 2007]Recherche avancée : proprité avec un quote
    Par royto dans le forum SharePoint
    Réponses: 6
    Dernier message: 14/09/2007, 14h43

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