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 :

désactiver les contraintes


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Points : 97
    Points
    97
    Par défaut désactiver les contraintes
    bonjour,

    Quelqu'un sait il s'il est possible de désactiver les contraintes de clé primaire le temps d'une copie brute de données par code ?

    merci !

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Non tu dois supprimer la contrainte, inserer tes données et reposer ta contrainte pour vu que tes données puissent respecter ta contrainte de clé primaire.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Points : 97
    Points
    97
    Par défaut merci
    en fait, c'est bizarre :

    j'ai une base de données Access, une base de données SQL Server.
    J'ai développé un outil avec Access qui permet d'insérer les données de la base Access dans celle SQL Server. En gros, je fais des :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into tablecible(champ1, champ2...) select champ1,champ2 from tablesource
    Tout en respectant bien l'ordre d'insertion pour la contrainte des clés étrangères...
    Mais chose bizarre : même lors d'insertions dans des tables indépendantes de clés étrangères, Access me retourne un message d'erreur "Violation de clé..."
    Je fais bien un "set identity_insert on" avant d'insérer les données donc ça vient pas de là...

    Le seul moyen est donc de supprimer toutes les relations et de les refaires une à une par code ? (j'ai une 50aine de tables...)

    merci pour tes remarques.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Points : 97
    Points
    97
    Par défaut update
    apparemment ça viendrait des champs compteur en clé primaire...
    pourtant je mets bien "set identity_insert NomTable ON"...
    Est il possible de modifier la clé primaire par le code pour enelver l'attribut identity ? (On peut le faire à la main via enterprise manager donc je me dis que ça doit etre possible...

    merci

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Quand vous désactivez la contrainte d'autoincrément, alors, vous devez inserer sa valeur manuellement .
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Create table T_Matable
    (
    	ma_id int not null identity(0,1) primary key,
    	ma_valeur int
    )
    go
    SET IDENTITY_INSERT T_MaTable ON;
    INSERT INTO T_MaTable(ma_id,ma_valeur)
    values(0,23)
    INSERT INTO T_MaTable(ma_id,ma_valeur)
    values(4,12)
    go
    Et pas de problème !!!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Points : 97
    Points
    97
    Par défaut justement...
    ...chez moi il y a un pb. Le seul moyen que j'ai trouvé pour insérer et de désactiver le compteur via enterprise manager, ce qui n'est finalement pas très gênant car cette base ne sert qu'à la consultation.

    ps: je fais partie de ceux qui cherchent avant de poster

  7. #7
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Quel est le message qu'il te donne ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Points : 97
    Points
    97
    Par défaut
    bah en fait c'est Access qui me renvoit le message générique du genre :

    MonApplication ne peut pas ajouter tous les enregistrements de la requete Ajout.

    MonApplication a attribué la valeur Null à 0 champ(s) à la suite d'une erreur de conversion de type, 1 enregistrement(s) n'ont pas été ajoutés à la table à la suite de violation de clé, 0 enregistrement(s) à la suite de violation de verrous..........etc
    Bizarre mais bon j'ai contourné le problème.

    a+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2012, 15h15
  2. Désactiver les contraintes pour des tests unitaires
    Par felipe2000fr dans le forum Hibernate
    Réponses: 1
    Dernier message: 06/04/2011, 09h50
  3. Désactiver les contraintes
    Par hpavavar dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/08/2009, 10h39
  4. Activer/Désactiver les contraintes
    Par mortimer.pw dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 04/07/2008, 11h26
  5. activer / désactiver toutes les contraintes
    Par clawhammer dans le forum Oracle
    Réponses: 4
    Dernier message: 12/10/2006, 14h58

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